Как создать один исполняемый файл с заданиями на сельдерей

Я успешно изучил некоторые основы Celery, но я не нашел простого способа создания исполняемого файла с одним файлом (без необходимости запуска celerybeat в качестве отдельного процесса для выполнения периодических задач). Можно написать приложение и запустить его рабочий процесс ( http://docs.celeryproject.org/en/3.1/userguide/application.html ):

from datetime import timedelta from celery import Celery app = Celery() @app.task def test(): print("he-he") app.conf.update( BROKER_URL="redis://localhost:6379", CELERY_RESULT_BACKEND="redis://localhost:6379", CELERY_ACCEPT_CONTENT=["application/json"], CELERY_TASK_SERIALIZER="json", CELERY_RESULT_SERIALIZER="json", CELERYBEAT_SCHEDULE={ 'runs-every-30-seconds': { 'task': '__main__.test', 'schedule': timedelta(seconds=30), }, } ) if __name__ == '__main__': app.worker_main() 

Но как я могу запустить процесс биений из того же модуля, чтобы начать выполнение периодических задач (чтобы не запускать демон celerybeat в качестве отдельного исполняемого файла)? Это важно, потому что я хотел бы использовать pyinstaller, поэтому на клиентских машинах не будет доступен выделенный интерпретатор Python.

Заранее спасибо! И позвольте пожелать вам счастливого Рождества и Нового года!

Ну, ребята, эта задача не так сложна, как я предполагал. Небольшое исследование позволило мне найти ответ.

Можно запустить процесс создания простого бина:

 # that's the class to run the beat process from celery.bin.beat import beat # your app from celery_tasks import app if __name__ == "__main__": beat(app=app).run() 

Спасибо!

Interesting Posts