RabbitMQ现在似乎工作正常。然而,当我尝试时
python -m celery.bin.celeryd --loglevel=INFO`
(常规celeryd
不起作用),我得到错误
找不到记录器"multiprocessing"的处理程序`)。
以下是完整的输出(略有编辑):
[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中使用它了!
(这不是我第一次没有发现任何处理程序错误,但我在网上找不到任何关于这方面的信息…)
您需要确保从主进程启动的所有进程也正确设置日志记录。这里有一篇文章讨论了如何最好地使用multiprocessing
进行日志记录。尽管这讨论了Python 3.2附带的功能,但您也可以在早期的Python版本中获得此功能——请参阅另一篇文章。
更新:重点是每个进程都需要初始化日志记录,您需要在代码中对此进行安排,方法与第一篇文章中的示例类似:请参阅listener_configurer
和worker_configurer
。您可以使用logutils
来帮助您,但最重要的是要意识到,如果要避免出现"找不到处理程序"的消息,每个进程都需要配置日志记录。
芹菜初始化日志的方式似乎有些奇怪。如果我把开关--logfile=yourfile.log
放在命令行上,它可以可靠地工作,但从配置中读取日志会得到不可靠的结果,包括您看到的内容。
确保日志文件目录存在,并且进程对日志目录具有写入权限。
我遇到了类似的问题,在创建日志文件位置目录后,问题消失了。