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!
(这不是我的第一个没有找到处理程序错误,但我在网上找不到任何关于此的内容......)
答案 0 :(得分:1)
您需要确保从主进程启动的所有进程也正确设置日志记录。 Here's a post讨论如何使用multiprocessing
进行最佳记录。虽然它讨论了Python 3.2中的功能,但您也可以为早期的Python版本获得此功能 - 请参阅this other post。
更新:重点是每个进程都需要初始化日志记录,您需要在代码中对此进行排列,方式与第一篇文章中的示例相似: listener_configurer
和worker_configurer
。您可以使用logutils
来帮助您,但主要是要意识到每个进程都需要配置日志记录,如果您要避免“无法找到处理程序”消息。
答案 1 :(得分:0)
celery初始化日志记录的方式似乎有些奇怪。如果我将开关--logfile=yourfile.log
放在命令行上,它可以正常工作,但从配置中读取日志记录会产生不可靠的结果,包括你看到的东西。
答案 2 :(得分:0)
确保日志文件目录存在且进程具有对日志目录的写入权限。
我遇到了类似的问题,在创建日志文件位置目录后,问题就消失了。