This commit is contained in:
bvn13 2026-03-22 19:19:11 +03:00
parent 3542179f55
commit d6ae214cfb
3 changed files with 24 additions and 8 deletions

View File

@ -5,7 +5,7 @@ WORKDIR /app
COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
COPY pyproject.toml uv.lock* ./ COPY pyproject.toml uv.lock* ./
RUN uv sync --no-dev RUN uv sync --frozen --no-dev
COPY src/ ./src/ COPY src/ ./src/

View File

@ -16,8 +16,8 @@ build-backend = "hatchling.build"
[tool.hatch.build.targets.wheel] [tool.hatch.build.targets.wheel]
packages = ["src"] packages = ["src"]
[tool.uv] [dependency-groups]
dev-dependencies = [ dev = [
"pytest>=8.0", "pytest>=8.0",
"pytest-asyncio>=0.23", "pytest-asyncio>=0.23",
] ]

View File

@ -34,7 +34,7 @@ logging.basicConfig(
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
async def main() -> None: async def setup() -> tuple:
# 1. Конфиг из окружения # 1. Конфиг из окружения
bot_jid = os.environ["BOT_JID"] bot_jid = os.environ["BOT_JID"]
bot_password = os.environ["BOT_PASSWORD"] bot_password = os.environ["BOT_PASSWORD"]
@ -106,11 +106,27 @@ async def main() -> None:
# 9. Scheduled адаптер # 9. Scheduled адаптер
checker = NewsChecker(fetch_and_publish) checker = NewsChecker(fetch_and_publish)
# 10. Запуск return connection, checker
def main() -> None:
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
connection, checker = loop.run_until_complete(setup())
# slixmpp — asyncio-native, process() не существует
# connect() ставит соединение в очередь, loop.run_forever() его выполняет
connection.connect() connection.connect()
asyncio.ensure_future(checker.start()) loop.create_task(checker.start())
connection.process(forever=True)
try:
loop.run_forever()
except KeyboardInterrupt:
logger.info("Завершение по Ctrl+C")
finally:
loop.close()
if __name__ == "__main__": if __name__ == "__main__":
asyncio.run(main()) main()