首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >最简单的django定时/计划任务(例如:提醒)?

最简单的django定时/计划任务(例如:提醒)?
EN

Stack Overflow用户
提问于 2012-02-07 06:34:49
回答 1查看 346关注 0票数 2

问题与thisthis相关;

不同之处在于,我更喜欢那些可能更精确、负载更低(每分钟执行cron作业的情况下不可取)且开销最小(即,使用rabbitmq安装芹菜看起来有点过度)的程序。

这样的一个示例任务是个人提醒服务器(具有可以在web上编辑并通过电子邮件或XMPP发送的提醒)。

我可能正在寻找更像node.js的setTimeout,但对于django (尽管我可能更喜欢用node.js实现提醒,但这仍然是一个可能很有趣的问题)。

例如,可以在django应用程序中启动新的线程(使用由sleep()和send()组成的函数);这在哪些方面是不好的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-02-07 07:44:45

在这个解决方案中使用线程的问题是Python线程的典型问题,这些问题总是促使人们转向多进程解决方案。这里的问题因为您的线程不是由正常的请求-响应周期驱动的事实而变得复杂。Malcolm Tredinnick here很好地总结了这一点。

不同意这一观点。线程不是解决这个问题的好方法。问题在于流程管理。如上所述,您的线程将永远不会重新联接。you服务器进程的生命周期不受您的控制( MaxRequestsPerChild Apache参数和其他服务器中的类似内容),您可以使用线程来扰乱它。

如果您需要一个生命周期与请求-响应路径不匹配的流程-一些长期运行且独立于响应的流程-则完全独立的流程绝对是正确的模型。使用线程将其与响应生命周期捆绑在一起,这将产生意想不到的副作用。

一种可能的解决方案是让一个长时间运行的进程执行您的任务,它会从一个轻量级的cron进程获得唤醒信号。

另一种可能是使用0mq构建一些东西,它比AMQP风格的队列要轻得多(当然是以一些功能为代价)。Tarek Ziade正在开发一个名为powerhose的Mozilla项目,它使用0mq,看起来超级简单,并且具有心跳功能,分辨率为秒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9168359

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档