2014-03-04 36 views
3

我真的很努力在Windows 7上使用Celery Beat設置定期任務(不幸的是,我現在正在處理這個問題)。將使用芹菜的應用程序是用CherryPy編寫的,所以Django庫在這裏不相關。我正在尋找的是一個如何在後臺啓動Celery Beat流程的簡單示例。常見問題解答部分說了這樣的,但我一直沒能真正做到這一點尚未:芹菜擊敗Windows簡單示例(不與Django)

的Windows

的-B/-beat選項工人不工作¶

?答:那就對了。改爲將芹菜拍和芹菜工作者作爲單獨的服務。

我的項目佈局如下:

proj/ 
    __init__.py (empty) 
    celery.py 
    celery_schedule.py 
    celery_settings.py (these work 
    tasks.py 

celery.py:

from __future__ import absolute_import 

from celery import Celery 
from proj import celery_settings 
from proj import celery_schedule 

app = Celery(
    'proj', 
    broker=celery_settings.BROKER_URL, 
    backend=celery_settings.CELERY_RESULT_BACKEND, 
    include=['proj.tasks'] 
) 

# Optional configuration, see the application user guide. 
app.conf.update(
    CELERY_TASK_RESULT_EXPIRES=3600, 
    CELERYBEAT_SCHEDULE=celery_schedule.CELERYBEAT_SCHEDULE 
) 

if __name__ == '__main__': 
    app.start() 

tasks.py

from __future__ import absolute_import 

from proj.celery import app 


@app.task 
def add(x, y): 
    return x + y 

celery_schedule.py

from datetime import timedelta 

CELERYBEAT_SCHEDULE = { 
    'add-every-30-seconds': { 
      'task': 'tasks.add', 
      'schedule': timedelta(seconds=3), 
      'args': (16, 16) 
    }, 
} 

從命令行(從「proj」的父目錄)運行「celery worker --app = proj -l info」啓動worker線程就好了,我可以從Python終端執行添加任務。但是,我無法弄清楚如何啓動節拍服務。很明顯,語法可能不正確,因爲我沒有通過缺少--beat選項。

+1

您是否嘗試過運行類似「芹菜拍-app = PROJ」? – xbb

回答

2

只需通過一個新的終端窗口啓動另一個進程,確保你在正確的目錄下並執行命令celery beat(在beat關鍵字之前需要no' - ')。

如果這不能解決您的問題,重命名celery_schedule.py文件celeryconfig.py並將其包含在你的celery.py文件:app.config_from_object(「celeryconfig」)正上方的 ==主

然後產生一個新的芹菜拍過程:芹菜擊敗