2013-04-23 90 views
0

下面是我想要做的:使用PHP将消息推入队列(Beanstalkd,IronMQ,Amazon SQS)。PHP推送到消息队列;使用多线程的Python客户端进程?

然后我想要一个Python脚本立即拿起消息。我想我只会有一个运行while(true)循环的Python脚本来继续轮询消息服务器?

然后使用每个作业的新线程处理它。如果队列中有10条消息,我希望python运行10个线程,每个作业1个。

我的问题是:

  1. 这是做事实实在在地,或是否有更好的方式来设置呢?
  2. 如何确保我的Python脚本启动并永久轮询?

回答

1

这是一种坚实的做事方式,还是有更好的方法来设置它?

听起来合理的给我,但如果你希望大量并发工作,你可能想通过使用thread pool限制线程的总数。

对于CPU密集型线程,当线程总数超过CPU内核总数时,如果线程需要大量磁盘I/O,则不会获得更高的CPU性能,因此您需要限制它们以避免抖动磁盘。

如何确保我的Python脚本启动并永久轮询?

守护进程通常有另一个进程监视它们,并在它们崩溃或无响应时重新启动它们。一个简单的cronjob可能就足够了这个目的。

+0

是[supervisord](http://supervisord.org/)我想照顾我的Python脚本吗? – 2013-04-23 16:08:29

+0

@StephenSarcsamKamenar我无法真正推荐任何特定的解决方案,因为我从未使用过除cronjob以外的其他任何内容。真正的守护进程通常会'fork()'子进程并监视子进程,但这可能会更复杂。在一天结束时,只要守护进程经过良好测试,您可能根本无需监视它。 – Aya 2013-04-23 16:14:30

+0

有一个守护进程崩溃问题的解决方案 - [supervisord](http://supervisord.org)。这个人会这样做:1.监控你的进程2.在没有init.d脚本的情况下启动你的守护进程3.如果它死了,重新生成进程。 – 2013-04-24 23:39:54

相关问题