From f341ca349091e2569f31efb8a7f1c101b011a6fa Mon Sep 17 00:00:00 2001 From: Sergey Elpashev Date: Thu, 15 Feb 2024 15:21:49 +0300 Subject: [PATCH] Moved from aioschedule to APSchedule --- .dockerignore | 6 ++++- .env.example | 4 +++- Dockerfile | 2 +- handlers/message_handlers/post_command.py | 2 +- handlers/message_handlers/update_settings.py | 25 ++++++++++---------- requirements.txt | 2 +- settings.toml | 1 - 7 files changed, 23 insertions(+), 19 deletions(-) delete mode 100644 settings.toml diff --git a/.dockerignore b/.dockerignore index 067ec1d..7aa2702 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,3 +1,7 @@ venv .env.example -Dockerfile \ No newline at end of file +Dockerfile +.vscode +LICENSE +Dockerfile.dev +.gitignore \ No newline at end of file diff --git a/.env.example b/.env.example index d1237de..ff770ad 100644 --- a/.env.example +++ b/.env.example @@ -7,4 +7,6 @@ API_URL="http://localhost:3000" REDIS_HOST="localhost" REDIS_PORT=6379 REDIS_PASSWORD=123 -REDIS_DB=0 \ No newline at end of file +REDIS_DB=0 + +LOGGING_LVL=WARNING \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index ec3a254..a351f11 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,6 +4,6 @@ WORKDIR /app COPY . . -RUN pip install -r requirements.txt +RUN pip install --no-cache-dir -U -r requirements.txt CMD [ "python", "main.py" ] \ No newline at end of file diff --git a/handlers/message_handlers/post_command.py b/handlers/message_handlers/post_command.py index 7caa5f5..30faf5c 100644 --- a/handlers/message_handlers/post_command.py +++ b/handlers/message_handlers/post_command.py @@ -10,7 +10,7 @@ from .handler import MessageHandlerABC class PostCommand(MessageHandlerABC): filter = Command('post') - async def _command(self, message: types.Message): + async def _command(self, message: types.Message | None = None): settings = neuroTypes.BotSettings.get_instance() try: post = await neuroapi.post.get_post_to_post() diff --git a/handlers/message_handlers/update_settings.py b/handlers/message_handlers/update_settings.py index 58498fa..0508b1f 100644 --- a/handlers/message_handlers/update_settings.py +++ b/handlers/message_handlers/update_settings.py @@ -1,11 +1,13 @@ import asyncio +import logging from typing import Coroutine -import aioschedule as schedule from aiogram import Bot, types from aiogram.filters import Command +from apscheduler.schedulers.asyncio import AsyncIOScheduler from neuroapi import neuroapi +from neuroapi.config import GlobalConfig from neuroapi.types import BotSettings from .handler import MessageHandlerABC @@ -18,28 +20,25 @@ class UpdateSettingsCommand(MessageHandlerABC): async def settings_and_schedule_checker(self): await self._auto_update_settings() - while 1: - await schedule.run_pending() - await asyncio.sleep(1) async def _auto_update_settings(self): self.settings = await neuroapi.bot_settings.get() - schedule.clear() - schedule.every().minute.do(self._auto_update_settings) + self.scheduler.remove_all_jobs() + self.scheduler.add_job(self._auto_update_settings, 'interval', seconds=60) # TODO: Сделать в бэке и в боте, чтоб дни тоже можно было в настройках хранить for i in self.settings.message_times: - schedule.every().monday.at(i).do(self.post, None) - schedule.every().tuesday.at(i).do(self.post, None) - schedule.every().wednesday.at(i).do(self.post, None) - schedule.every().thursday.at(i).do(self.post, None) - schedule.every().friday.at(i).do(self.post, None) - schedule.every().sunday.at(i).do(self.post, None) + self.scheduler.add_job(self.post, 'cron', day_of_week='mon-sun', hour=i.split(':')[0], minute=i.split(':')[1]) + logging.debug(self.scheduler.get_jobs()) def __init__(self, bot: Bot, post_command: Coroutine, *args) -> None: super().__init__(bot) self.post = post_command - asyncio.create_task(self.settings_and_schedule_checker()) + config = GlobalConfig() + logging.debug(config) + self.scheduler = AsyncIOScheduler(event_loop=asyncio.get_event_loop()) + self.scheduler.add_job(self.settings_and_schedule_checker, 'interval', seconds=60) + self.scheduler.start() async def _command(self, mes: types.Message): self.settings = await neuroapi.bot_settings.get_update() diff --git a/requirements.txt b/requirements.txt index 6c958d3..5d5f775 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,5 +1,5 @@ aiogram==3.3.0 -aioschedule @ https://github.com/AleksHeller/python-aioschedule/archive/refs/heads/master.zip +APScheduler==3.10.4 requests==2.31.0 python-dateutil==2.8.2 aiohttp==3.9.3 diff --git a/settings.toml b/settings.toml deleted file mode 100644 index 5e0b040..0000000 --- a/settings.toml +++ /dev/null @@ -1 +0,0 @@ -time = ["12:00", "14:00", "16:00", "18:00"] \ No newline at end of file