2012-10-15 67 views

回答

66

您是否嘗試過從Django shell運行任務?您可以使用任務的.apply方法來確保它在急切和本地運行。

假設任務在Django應用程序myapptasks子模塊稱爲my_task

$ python manage.py shell 
>>> from myapp.tasks import my_task 
>>> eager_result = my_task.apply() 

結果實例具有相同的API通常AsyncResult類型,不同的是結果總是急切和本地計算和.apply()方法將阻塞,直到任務運行完成。

+0

如何爲金字塔項目做同樣的事情?該目錄結構將是這樣的: /myproject的=> celeryconfig.py, setup.py, development.py, /視圖/ celerytasks => mycelerytask.py 。現在我在這裏要運行「mycelerytask。 py'(這是週期性的任務)從命令行手動。你能幫我嗎? – Workonphp

+0

@Workonphp不幸的是,我並不熟悉金字塔,所以我不知道芹菜是如何與金字塔結合的。 (請注意,我上面的解決方案是Django特定的,需要Django在所有Django項目目錄中生成的manage.py'腳本。)對不起。 –

5

我想你需要打開兩個shell:一個用於執行Python/Django shell中的任務,另一個用於運行celery workerpython manage.py celery worker)。正如前面的答案所述,您可以使用apply()apply_async()

運行任務我編輯了答案,因此您沒有使用棄用的命令。

+1

現在,已棄用manage.py celeryd:http://stackoverflow.com/a/23921568/1459594 – rschwieb