From bb1470e57f90a114f0334588055c772debfde48d Mon Sep 17 00:00:00 2001 From: MrNaif2018 Date: Mon, 15 Jul 2019 15:37:18 +0300 Subject: [PATCH] Add section to docs about scheduling --- docs/source/index.rst | 1 + docs/source/topics/scheduling.rst | 73 +++++++++++++++++++++++++++++++ 2 files changed, 74 insertions(+) create mode 100644 docs/source/topics/scheduling.rst diff --git a/docs/source/index.rst b/docs/source/index.rst index 5cb9bb2e..b8927657 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -40,6 +40,7 @@ Welcome to Pyrogram topics/more-on-updates topics/config-file topics/smart-plugins + topics/scheduling topics/auto-auth topics/session-settings topics/tgcrypto diff --git a/docs/source/topics/scheduling.rst b/docs/source/topics/scheduling.rst new file mode 100644 index 00000000..70f70215 --- /dev/null +++ b/docs/source/topics/scheduling.rst @@ -0,0 +1,73 @@ +Scheduling tasks +================ + +Pyrogram itself as Telegram MTProto API Framework contains only stuff +related to Telegram. Scheduling is out of it's scope. + +But it is easy to integrate pyrogram with your favourite scheduler. + +schedule +-------- + +Note that schedule is not suitable for async version of pyrogram. + +.. code-block:: python + + import time + import schedule + + + def job(): + app.send_message("me", "Hi!") + + + schedule.every(10).minutes.do(job) + schedule.every().hour.do(job) + schedule.every().day.at("10:30").do(job) + schedule.every(5).to(10).minutes.do(job) + schedule.every().monday.do(job) + schedule.every().wednesday.at("13:15").do(job) + schedule.every().minute.at(":17").do(job) + + with app: + while True: + schedule.run_pending() + time.sleep(1) + + +apscheduler +----------- + +.. code-block:: python + + import time + from apscheduler.schedulers.background import BackgroundScheduler + + + def job(): + app.send_message("me", "Hi!") + + + scheduler = BackgroundScheduler() + scheduler.add_job(job, 'interval', seconds=3) + + scheduler.start() + app.run() + +Apscheduler supports async version of pyrogram too, here is async example: + +.. code-block:: python + + from apscheduler.schedulers.asyncio import AsyncIOScheduler + + + async def job(): + await app.send_message("me", "Hi!") + + + scheduler = AsyncIOScheduler() + scheduler.add_job(job, 'interval', seconds=3) + + scheduler.start() + app.run() +