Es gibt eine Bibliothek namens huey, die Aufgabenwarteschlangen in Python realisiert. Sie können die regelmäßige Jobausführung einfacher implementieren als Sellerie, das für die Bibliothek derselben Task-Warteschlange bekannt ist. Dieses Mal werde ich nicht auf die normale Ausführung von Aufgaben eingehen.
--Installation der Bibliothek
pip install huey
pip install redis
--Starten Sie Redis für Broker
Beginnen Sie einfach mit Docker
docker run --rm -d -p 6379:6379 redis
Dieses Mal haben wir Redis über den Broker gestartet, also rufen wir Redis Huey an. Sie können einen periodischen Job registrieren, indem Sie der Funktion einen periodic_task-Dekorator hinzufügen.
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")
Geben Sie die Ausführungszeit des Jobs mit der Crontab als Dekorationsargument an. Diese Zeit ist jede Minute.
Nach der Installation von huey können Sie den Befehl huey_consumer verwenden, mit dem der Arbeitsprozess gestartet wird.
$ 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
Sie können sehen, dass der Job jede Minute ausgeführt wird.
das ist alles
Recommended Posts