From 6973f584886bc5d65e6aa5d88a5f98abeb8a287e Mon Sep 17 00:00:00 2001 From: Dan <14043624+delivrance@users.noreply.github.com> Date: Thu, 1 Aug 2019 12:37:22 +0200 Subject: [PATCH] Update scheduling.rst --- docs/source/topics/scheduling.rst | 50 +++++++++++++++++++++---------- 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/docs/source/topics/scheduling.rst b/docs/source/topics/scheduling.rst index 1f4e1e01..3cb95ec7 100644 --- a/docs/source/topics/scheduling.rst +++ b/docs/source/topics/scheduling.rst @@ -1,23 +1,34 @@ -Scheduling tasks +Scheduling Tasks ================ -Pyrogram itself as Telegram MTProto API Framework contains only stuff -related to Telegram. Scheduling is out of it's scope. +Scheduling tasks means executing one or more functions periodically at pre-defined intervals or after a delay. This is +useful, for example, to send recurring messages to specific chats or users. -But it is easy to integrate pyrogram with your favourite scheduler. +Since there's no built-in task scheduler in Pyrogram, this page will only show examples on how to integrate Pyrogram +with the main Python schedule libraries such as ``schedule`` and ``apscheduler``. For more detailed information, you can +visit and learn from each library documentation. -schedule --------- +Using ``schedule`` +------------------ + +- Install with ``pip3 install schedule`` +- Documentation: https://schedule.readthedocs.io .. code-block:: python import time + import schedule + from pyrogram import Client + + app = Client("my_account") + def job(): app.send_message("me", "Hi!") + schedule.every(3).seconds.do(job) with app: @@ -25,43 +36,52 @@ schedule schedule.run_pending() time.sleep(1) -Note that schedule is not suitable for async version of pyrogram. -For more information read `library `_ docs. -apscheduler ------------ + +Using ``apscheduler`` +--------------------- + +- Install with ``pip3 install apscheduler`` +- Documentation: https://apscheduler.readthedocs.io .. code-block:: python - import time from apscheduler.schedulers.background import BackgroundScheduler + from pyrogram import Client + + app = Client("my_account") + def job(): app.send_message("me", "Hi!") scheduler = BackgroundScheduler() - scheduler.add_job(job, 'interval', seconds=3) + scheduler.add_job(job, "interval", seconds=3) scheduler.start() app.run() -Apscheduler supports async version of pyrogram too, here is async example: +``apscheduler`` does also support async code, here's an example with +`Pyrogram Asyncio `_: .. code-block:: python from apscheduler.schedulers.asyncio import AsyncIOScheduler + from pyrogram import Client + + app = Client("my_account") + async def job(): await app.send_message("me", "Hi!") scheduler = AsyncIOScheduler() - scheduler.add_job(job, 'interval', seconds=3) + scheduler.add_job(job, "interval", seconds=3) scheduler.start() app.run() -For more information read `library `_ docs.