Python工作服务守护进程?

9

我应该查看哪些软件包来编写Python守护进程并处理任务?此外,我需要为Python守护进程做什么?

3个回答

3

2

您的问题有些含糊不清,但我认为您是想编写一个Python守护进程来处理被加入队列的作业。如果不是,请告诉我。 :-)

我听说过很多关于redis的好评。GitHub的开发人员构建了resque,作为Ruby的作业处理守护进程。如果您具有语言灵活性,可以直接使用它,但如果没有,可以利用redis作为您的队列系统,在所需的深度上进行模拟。这可能是一个非常简单的实现。

在一些进一步的搜索后,我找到了另一个选项:redqueue。它看起来已经实现了大部分工作队列。

如果您正在使用django,则可以考虑Celery项目。它是基于RabitMQ的作业队列系统,后者是另一个受到极高评价的队列服务器。

就Python中创建守护程序而言,有多种选择。您可以查看这个activestate上的页面,这是一个很好的开始。更好的选择是使用python-daemon来为您完成所有任务。但是,如果您使用上述选项之一或mczepiel建议的beanstalkd,则可能不需要将进程运行为守护程序。


我看到了Python-Daemon,它现在稳定吗? - Timmy
我相信是这样,但我还没有花时间阅读它的代码或其他任何东西,所以我不能确定。 - Benson

1
我最近(本周)在RabbitMQ中实现了一个队列,使用Python守护进程提取信息并将其存储在数据库中(使用Django ORM)。该守护进程具有中间缓冲区,因此它会等待一段时间并分批写入数据库,而不是每次到达一条小消息时都进行写入。
我使用这个小flopsy模块与队列进行集成,它很容易设置。唯一的问题是能否设置等待消息的超时时间,因为该模块没有明确的方法来执行此操作。经过一段时间的交互式shell操作和几个dir()之后,我设法获得了socket对象并设置了超时时间。
我还考虑了Celery,但似乎更专注于使用内部的RabbitMQ来允许您启动任务(定期或异步),而不是使用队列与其他系统通信。在我们的情况下,队列可以由Python系统和Ruby系统同时提供数据。

完成过程后,我进行了一些调整,以便将其作为守护进程运行(主要是将标准输出存储到文件中以便于日志记录),然后创建一个启动start-stop-daemon命令的bash脚本。我大致遵循了这个schema 我发现python-daemon晚了一天才知道,所以在工作完成后重新访问它没有意义,但对于Python项目来说可能更有意义。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接