2011-06-05 90 views
3

RabbitMQ現在似乎工作正常。然而,當我嘗試錯誤信息'沒有處理程序可以找到記錄器'多處理''使用芹菜

python -m celery.bin.celeryd --loglevel=INFO` 

(普通celeryd不工作),我得到的錯誤

沒有處理程序可以爲記錄器中找到 「多」`)。

下面是完整的輸出(略刪節):

[2011-06-06 02:08:08,105: WARNING/MainProcess] -------------- [email protected] v2.2.6 
---- **** ----- 
--- * *** * -- [Configuration] 
-- * - **** --- . broker:  amqplib://[email protected]:5672/vhost 
- ** ---------- . loader:  celery.loaders.default.Loader 
- ** ---------- . logfile:  [stderr]@INFO 
- ** ---------- . concurrency: 2 
- ** ---------- . events:  OFF 
- *** --- * --- . beat:  OFF 
-- ******* ---- 
--- ***** ----- [Queues] 
-------------- . celery:  exchange:celery (direct) binding:celery 


[Tasks] 
    . tasks.add 
[2011-06-06 02:08:08,812: WARNING/MainProcess] [email protected] has started 
. 
No handlers could be found for logger "multiprocessing" 
No handlers could be found for logger "multiprocessing" 

我真的很想得到這個設置正確,所以我可以繼續使用它與Django的!

(這不是我第一次沒有處理髮現錯誤,但我無法找到關於這一網絡上的任何東西......)

回答

0

芹菜初始化記錄的方式似乎有些奇怪。如果我將命令行--logfile=yourfile.log放在命令行上,它可以可靠地工作,但是從配置中讀取日誌會產生不可靠的結果,包括您看到的內容。

1

你需要確保所有的進程從主進程啓動也正確設置了日誌記錄。 Here's a post,其中討論瞭如何最好地使用multiprocessing進行日誌記錄。儘管討論了Python 3.2中的特性,但您也可以爲早期的Python版本獲得此功能 - 請參閱this other post

更新:的一點是,每個過程都需要初始化日誌,你需要在你的代碼進行安排,以類似的方式正在發生的事情的例子是在後完成:看listener_configurerworker_configurer。您可以使用logutils來幫助您,但最重要的是要意識到每個進程都需要配置日誌記錄,如果您要避免「找不到處理程序」消息。

+1

我仍然困惑於代碼會去的地方。我是否將它包含在Python的某個地方?我是否修改芹菜本身?我是否將其作爲「Celery」mini-app的第一步樣本的一部分?如果上述任何一項,我在哪裏放?我該怎麼稱呼它?我從理論上理解你的解決方案,但不幸的是,我不知道如何應用它 - 我覺得在某些時候我缺乏一個基本的理解水平。 – RHH 2011-06-06 09:10:40

0

確保日誌文件目錄存在,且進程對日誌目錄具有寫入權限。

我面臨類似的問題,創建日誌文件位置目錄後,問題就消失了。

相關問題