2014-11-20 102 views
1

我是一家使用Django與Celery進行異步通信的公司的新僱員。我對芹菜也是新手。芹菜爲什麼試圖執行不再存在的任務?

上一位程序員離開了已定義過時的Celery任務。每30秒執行一次數據庫檢索,執行一堆邏輯,然後將結果丟棄。這顯然是一個死路一條,後來完成了一個不同的系統,這實際上是做這件事的。

我已刪除從Python源任務定義文件,它被發現,並且也去掉了下面的部分從我們的settings.py文件:

CELERYBEAT_SCHEDULE = { 
    "runs-every-30-seconds": { 
     "task": "foo.tasks.execute_useless_task", 
     "schedule": timedelta(seconds=30), 
    }, 
} 

的問題是,芹菜仍試圖執行每當我通過主管啓動django和Celery時,從/var/log/supervisor/celeryd-stdout---supervisor-FZ2Xqo.log(線截斷簡潔):

ERROR 2014-11-20 15:26:35,637 base+498 Failed to submit message: u'Unknown task ignored: Task of kind \'foo.tasks.execute_useless_task\' is not registered, please make sure it\'s imported... 
ERROR 2014-11-20 15:26:35,751 base+504 Unknown task ignored: Task of kind 'foo.tasks.execute_useless_task' is not registered, please make sure it's imported... 
ERROR 2014-11-20 15:26:35,764 base+504 Unknown task ignored: Task of kind 'foo.tasks.execute_useless_task' is not registered, please make sure it's imported... 
...and so on... 

我一直在試圖通過芹菜文檔整天讀找出到底是怎麼芹菜可以知道這個任務,現在我已經從我們的代碼庫中刪除了它的所有痕跡(同時被同時拉到50個不同的方向,自然是一個開發人員,管理員和技術支持臺)。我發現的大多數文檔或討論都是圍繞着一個失敗來執行任務,並且顛倒了我發現的方向,導致無處可去。

如果任何人都可以指示我一些文檔,指出可以通過Django向芹菜註冊任務的所有方式,以便我可以弄清楚芹菜怎麼可能知道這個任務存在,我將不勝感激。

回答

1

回答了我自己的問題。

我原本以爲消息隊列是空的,但事實並非如此。清理出Redis的解決了這一問題對我來說:How do I delete everything in Redis?

# redis-cli 
> FLUSHDB 
> FLUSHALL 

通過回答過的問題