2013-05-21 44 views
7

我正在使用Django定期芹菜任務。我曾經在我的應用程序/文件tasks.py以下任務:芹菜節拍隊列包括過時的任務

@periodic_task(run_every=timedelta(minutes=2)) 
def stuff(): 
    ... 

但是,現在這個任務已經從我的應用程序/ tasks.py文件中刪除。但是,我總是看到調用此任務在我的芹菜日誌:

[2013-05-21 07:08:37,963: ERROR/MainProcess] Received unregistered task of type u'app.tasks.stuff'. 

看來,我用不更新其隊列中的芹菜節拍調度。這是如何在我的項目/ settings.py文件中定義調度程序:

CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler" 

重新啓動芹菜工沒有幫助。僅供參考,我使用Redis經紀人。

我該如何清除或更新芹菜節拍隊列,以便舊的任務不會發送到我的芹菜工?

+0

我認爲你也必須刪除該日程安排的數據庫條目。你可以從django管理員那裏這樣做。 – Ngenator

+0

嗨裏吉斯,你是否設法解決這個問題。我有同樣的問題。 @Ngenator - 你的解決方案是 –

+0

這個問題可能發生在redis服務器上。由於芹菜任務是一個被推入redis服務器的pickle對象,redis保留了過時的任務。重新啓動redis服務器,或調用任務的清除功能。 –

回答

-1

刪除.pyc文件以確定任務最初寫入的位置。或者,只需刪除項目目錄中的所有.pyc文件。

這個命令應該工作:

find . -name "*.pyc" -exec rm -rf {} \; 

How do I remove all .pyc files from a project?

+0

這不行!我也嘗試刪除'celerybeat-schedule'。 – Babu

2

安裝django-celery

如上所述,該項目不需要使用芹菜,但你需要這個來啓用管理界面/admin/djcelery/來管理定期任務。最初不會有任何註冊或定期任務。

重新啓動敲打併再次檢查表格週期性任務。 Beat會使用設置或裝飾器中定義的間隔或crontab將現有的計劃任務添加到該表中。在那裏你可以刪除不需要的任務。

UPDATE:從celery4開始,建議使用這個軟件包。 https://github.com/celery/django-celery-beat