2016-12-24 33 views
4

我已经成功学习了一些Celery的基础知识,但是我没有发现创建单个文件可执行文件的简单方法(无需运行celerybeat作为单独的进程来运行周期性任务)。它可以编写一个应用程序,并开始其工作进程(http://docs.celeryproject.org/en/3.1/userguide/application.html):如何使用celery任务创建单个文件可执行文件

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解释器。

在此先感谢! 让我祝你圣诞快乐,新年快乐!

回答

0

好吧,伙计们,这个任务并不像我想象的那么难。一个小小的研究让我找到了答案。

一个可以运行创建简单的节拍过程那样:

# 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() 

谢谢!

相关问题