Exécuter régulièrement des tâches de type cron en Python

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.

Préparation préalable

--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

Décrivez la tâche

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.

Démarrer le travailleur

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

Exécuter régulièrement des tâches de type cron en Python
Exécuter des tâches automatisées en Python
Exécuter des commandes shell en Python
Exécuter Python unittest en parallèle
Ne faites pas test.py en Python!
Créer un bookmarklet en Python
Rendre Opencv disponible en Python
Segfo python en 2 lignes
Segfo python en une ligne
Lançons "python -m antigravity" en python
Exécutez la commande shell / Python dans R
Rendre la sortie standard non bloquante en Python
Segfo python en trois lignes
Exécutez unittest en Python (pour les débutants)
Exécutez un algorithme simple en Python
Créer une animation GIF d'art ASCII avec Python
Exécutez AzureKinect en Python la veille de Noël.
Exécuter l'interpréteur Python dans le script
Automatisez les tâches en manipulant des fichiers en Python
Faisons un calcul de combinaison avec Python
Exécutez Python en C ++ sur Visual Studio 2017
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Exécutez l'API Google Analytics (core v3) en python
Exécutez Python YOLOv3 en C ++ sur Visual Studio 2017
Époque en Python
Discord en Python
Copiez la liste en Python
Allemand en Python
Jusqu'à ce que l'exemple de changefinder s'exécute sur python
DCI en Python
tri rapide en python
nCr en python
Plink en Python
Constante en Python
Faisons quelques exemples de traitement des notifications en Python
FizzBuzz en Python
Sqlite en Python
Créez un tracé de R semblable à un joyplot avec python
Étape AIC en Python
Comment exécuter LeapMotion avec Python non-Apple
LINE-Bot [0] en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python