2011-06-05 38 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

确保日志文件目录存在,且进程对日志目录具有写入权限。

我面临类似的问题,创建日志文件位置目录后,问题就消失了。

相关问题