2016-12-24 64 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() 

謝謝!

相關問題