问题与this和this有关;
不同的是,我更喜欢可能更精确和低负荷的东西(每分钟cron工作不适合那些)并且开销最小(即安装带有rabbitmq的芹菜似乎是一个很大的矫枉过正) .
这样的示例任务是个人提醒服务器(具有可以通过网络编辑并通过电子邮件或XMPP发送的提醒) .
我可能正在寻找更像node.js的setTimeout但是对于django(虽然我可能更喜欢在node.js中实现提醒,但它仍然是一个可能有趣的问题) .
例如,可以在django app中启动新线程(函数包含sleep()和send());在哪些方面这可能是坏事?
1 回答
使用线程来解决这个问题的问题是Python线程的典型问题,它总是驱使人们转向多进程解决方案 . 由于您的线程不是由正常的请求 - 响应周期驱动,因此问题更加复杂 . Malcolm Tredinnick here很好地总结了这一点:
一个可能的解决方案可能是让一个长时间运行的过程执行您的任务,从轻微的cron进程获取唤醒信号 .
另一种可能性是使用0mq构建一些东西,它比AMQP样式队列轻得多(当然以某些功能为代价) . Tarek Ziade正在开发一个名为powerhose的Mozilla项目,该项目使用0mq,看起来非常简单,并具有心跳功能,分辨率达到第二级 .