错误消息"找不到记录器"multiprocessing"的处理程序"使用芹菜



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_configurerworker_configurer。您可以使用logutils来帮助您,但最重要的是要意识到,如果要避免出现"找不到处理程序"的消息,每个进程都需要配置日志记录。

芹菜初始化日志的方式似乎有些奇怪。如果我把开关--logfile=yourfile.log放在命令行上,它可以可靠地工作,但从配置中读取日志会得到不可靠的结果,包括您看到的内容。

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

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

相关内容

  • 没有找到相关文章

最新更新