发布于 2012-02-07 07:44:45
在这个解决方案中使用线程的问题是Python线程的典型问题,这些问题总是促使人们转向多进程解决方案。这里的问题因为您的线程不是由正常的请求-响应周期驱动的事实而变得复杂。Malcolm Tredinnick here很好地总结了这一点。
不同意这一观点。线程不是解决这个问题的好方法。问题在于流程管理。如上所述,您的线程将永远不会重新联接。you服务器进程的生命周期不受您的控制( MaxRequestsPerChild Apache参数和其他服务器中的类似内容),您可以使用线程来扰乱它。
如果您需要一个生命周期与请求-响应路径不匹配的流程-一些长期运行且独立于响应的流程-则完全独立的流程绝对是正确的模型。使用线程将其与响应生命周期捆绑在一起,这将产生意想不到的副作用。
一种可能的解决方案是让一个长时间运行的进程执行您的任务,它会从一个轻量级的cron进程获得唤醒信号。
另一种可能是使用0mq构建一些东西,它比AMQP风格的队列要轻得多(当然是以一些功能为代价)。Tarek Ziade正在开发一个名为powerhose的Mozilla项目,它使用0mq,看起来超级简单,并且具有心跳功能,分辨率为秒。
https://stackoverflow.com/questions/9168359
复制相似问题