错误消息'使用Celery无法找到记录器“多处理”的处理程序

时间:2011-06-05 17:25:19

标签: python logging rabbitmq celery

RabbitMQ现在似乎正常运作。但是,当我尝试

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

(常规celeryd不起作用),我收到错误

  

无法找到记录器“多处理”的处理程序。

这是完整输出(稍微编辑):

[2011-06-06 02:08:08,105: WARNING/MainProcess] -------------- celery@blahblah v2.2.6
---- **** -----
--- * ***  * -- [Configuration]
-- * - **** ---   . broker:      amqplib://blah@localhost: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] celery@blahblah has started
.
No handlers could be found for logger "multiprocessing"
No handlers could be found for logger "multiprocessing"

我真的很想让这个设置正确,所以我可以继续使用Django!

(这不是我的第一个没有找到处理程序错误,但我在网上找不到任何关于此的内容......)

3 个答案:

答案 0 :(得分:1)

您需要确保从主进程启动的所有进程也正确设置日志记录。 Here's a post讨论如何使用multiprocessing进行最佳记录。虽然它讨论了Python 3.2中的功能,但您也可以为早期的Python版本获得此功能 - 请参阅this other post

更新:重点是每个进程都需要初始化日志记录,您需要在代码中对此进行排列,方式与第一篇文章中的示例相似: listener_configurerworker_configurer。您可以使用logutils来帮助您,但主要是要意识到每个进程都需要配置日志记录,如果您要避免“无法找到处理程序”消息。

答案 1 :(得分:0)

celery初始化日志记录的方式似乎有些奇怪。如果我将开关--logfile=yourfile.log放在命令行上,它可以正常工作,但从配置中读取日志记录会产生不可靠的结果,包括你看到的东西。

答案 2 :(得分:0)

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

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