我已经成功地学习了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()
但是我如何从同一个模块启动beat进程来开始运行周期性任务(为了不把celerybeat守护进程作为单独的可执行文件运行)呢?这很重要,因为我想使用pyinstaller,所以在客户端机器上没有专用的Python解释器可用。
1条答案
按热度按时间9lowa7mx1#
可以运行创建简单的节拍过程,如: