我想做的是:使用PHP将消息推入队列(Beanstalkd
, IronMQ
, Amazon SQS
)。
然后我需要一个Python脚本来立即接收该消息。我想我只是有一个Python脚本运行while(true)
循环保持轮询消息服务器?
然后为每个作业使用一个新线程来处理它。如果队列中有10个消息,我希望python运行10个线程,每个任务1个。
我的问题是:
- 这是一种可靠的做事方式,还是有更好的方法来设置它?
- 我如何确保我的Python脚本是启动和轮询永远?
这是一种可靠的做事方式,还是有更好的方法来设置它?
对我来说听起来很合理,但是如果您期望有大量的并发作业,您可能需要通过使用线程池来限制线程总数。
对于CPU密集型线程,当线程总数超过CPU内核总数时,您不会获得更多的CPU性能,并且如果线程需要大量的磁盘I/O,您将希望限制它们以避免磁盘抖动。
我如何确保我的Python脚本是启动和轮询永远?
守护进程通常有另一个进程监视它们,并在它们崩溃或无响应时重新启动它们。一个简单的cronjob就足够了。