PHP推送到消息队列;使用多线程的Python客户端进程?
问题描述:
下面是我想要做的:使用PHP将消息推入队列(Beanstalkd
,IronMQ
,Amazon SQS
)。PHP推送到消息队列;使用多线程的Python客户端进程?
然后我想要一个Python脚本立即拿起消息。我想我只会有一个运行while(true)
循环的Python脚本来继续轮询消息服务器?
然后使用每个作业的新线程处理它。如果队列中有10条消息,我希望python运行10个线程,每个作业1个。
我的问题是:
- 这是做事实实在在地,或是否有更好的方式来设置呢?
- 如何确保我的Python脚本启动并永久轮询?
答
这是一种坚实的做事方式,还是有更好的方法来设置它?
听起来合理的给我,但如果你希望大量并发工作,你可能想通过使用thread pool限制线程的总数。
对于CPU密集型线程,当线程总数超过CPU内核总数时,如果线程需要大量磁盘I/O,则不会获得更高的CPU性能,因此您需要限制它们以避免抖动磁盘。
如何确保我的Python脚本启动并永久轮询?
守护进程通常有另一个进程监视它们,并在它们崩溃或无响应时重新启动它们。一个简单的cronjob可能就足够了这个目的。
是[supervisord](http://supervisord.org/)我想照顾我的Python脚本吗? – 2013-04-23 16:08:29
@StephenSarcsamKamenar我无法真正推荐任何特定的解决方案,因为我从未使用过除cronjob以外的其他任何内容。真正的守护进程通常会'fork()'子进程并监视子进程,但这可能会更复杂。在一天结束时,只要守护进程经过良好测试,您可能根本无需监视它。 – Aya 2013-04-23 16:14:30
有一个守护进程崩溃问题的解决方案 - [supervisord](http://supervisord.org)。这个人会这样做:1.监控你的进程2.在没有init.d脚本的情况下启动你的守护进程3.如果它死了,重新生成进程。 – 2013-04-24 23:39:54