Il existe une bibliothèque appelée huey qui réalise des files d'attente de tâches en python. Il est plus simple d'implémenter l'exécution périodique des tâches que celery, qui est célèbre pour la bibliothèque de la même file d'attente de tâches. Cette fois, je ne parlerai pas de l'exécution normale des tâches.
--Installation de la bibliothèque
pip install huey
pip install redis
--Démarrez Redis pour le courtier
Commencez facilement avec Docker
docker run --rm -d -p 6379:6379 redis
Cette fois, nous avons lancé Redis sur le courtier, nous appelons donc Redis Huey. Vous pouvez enregistrer un travail périodique simplement en ajoutant un décorateur Period_task à la fonction.
main.py
from huey import RedisHuey, crontab
import time
huey = RedisHuey(host="127.0.0.1")
@huey.periodic_task(crontab(minute="*"))
def test():
print("process start")
time.sleep(5)
print("process end")
Spécifiez le temps d'exécution du travail avec la crontab donnée comme argument du décorateur. Cette fois, c'est toutes les minutes.
Après avoir installé huey, vous pouvez utiliser la commande huey_consumer, qui lancera le processus de travail.
$ huey_consumer main.huey
[2020-07-16 23:18:59,827] INFO:huey.consumer:MainThread:Huey consumer started with 1 thread, PID 2744 at 2020-07-16 14:18:59.827805
[2020-07-16 23:18:59,828] INFO:huey.consumer:MainThread:Scheduler runs every 1 second(s).
[2020-07-16 23:18:59,828] INFO:huey.consumer:MainThread:Periodic tasks are enabled.
[2020-07-16 23:18:59,828] INFO:huey.consumer:MainThread:The following commands are available:
+ main.test
[2020-07-16 23:18:59,836] INFO:huey.consumer.Scheduler:Scheduler:Enqueueing periodic task main.test: 30a61be7-903c-4fa7-815f-c5c013074085.
[2020-07-16 23:18:59,841] INFO:huey:Worker-1:Executing main.test: 30a61be7-903c-4fa7-815f-c5c013074085
process start
process end
[2020-07-16 23:19:04,847] INFO:huey:Worker-1:main.test: 30a61be7-903c-4fa7-815f-c5c013074085 executed in 5.005s
[2020-07-16 23:19:59,830] INFO:huey.consumer.Scheduler:Scheduler:Enqueueing periodic task main.test: 8166b273-1b97-427a-a349-a2772ea67fd2.
[2020-07-16 23:19:59,834] INFO:huey:Worker-1:Executing main.test: 8166b273-1b97-427a-a349-a2772ea67fd2
process start
process end
[2020-07-16 23:20:04,839] INFO:huey:Worker-1:main.test: 8166b273-1b97-427a-a349-a2772ea67fd2 executed in 5.005s
Vous pouvez voir que le travail s'exécute toutes les minutes.
c'est tout
Recommended Posts