首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python中的定时电子邮件提醒

python中的定时电子邮件提醒
EN

Stack Overflow用户
提问于 2010-04-29 03:06:45
回答 3查看 2.2K关注 0票数 1

我写了一个python脚本,允许用户输入消息,他的电子邮件和时间,他们想要发送的电子邮件。这些都存储在mysql数据库中。

但是,如何让脚本在上述时间和日期执行?它需要cron作业吗?我的意思是说,在4月20日的2:15,脚本将在数据库中搜索2:15的所有时间,并发送这些电子邮件。但是对于2:16的电子邮件呢?

我使用的是一个共享主机提供,所以不能有一个持续运行的脚本。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-04-29 03:47:40

如果你不能拥有一个持续运行的脚本,那么一定会有什么东西触发它,所以这必须依赖于你的操作系统内部。在unix环境中,正如您自己所述,cron作业可以完成此任务。

设置cron来运行脚本,并让脚本等待给定的时间,然后继续运行和发送,直到下一封电子邮件超过这个给定的时间。然后让脚本为新的唤醒时间添加一个新的cron作业。

票数 2
EN

Stack Overflow用户

发布于 2010-04-29 04:52:59

看起来这个django应用程序是专门为你这种情况的人做的。

http://code.google.com/p/django-cron/

而且,你的设计似乎有一点瑕疵。如果它在2:15运行,你不会想只发送应该在2:15发送的电子邮件,而是所有过去应该发送但没有发送的电子邮件。

您的数据库应该: A.在条目发送后将其删除,或者B.在数据库表上定义一个列来存储是否已发送。那么你的逻辑应该利用这一列。

票数 2
EN

Stack Overflow用户

发布于 2010-04-29 05:53:55

每分钟做一次cronjob就可以做到这一点。如果你正在考虑这一点,你可能会注意两件事:

1-每分钟预计发送多少封电子邮件?如果您发送一封电子邮件需要1秒钟,而您每分钟有100封电子邮件,那么您将无法完成队列。

2-如果一个作业在最后一个作业完成之前开始,会发生什么情况?注意不要发送两次电子邮件。您需要确保第一个进程结束(风险:最终可能会丢弃一封电子邮件),避免启动下一个进程(风险:第一个进程挂起整个队列),或者让它们并行工作(风险:同步问题)。

如果你采纳了daramarak的建议--让你的脚本在结束时添加一个新的cron作业--如果出现一个错误,你就会有整个系统崩溃的风险。

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

https://stackoverflow.com/questions/2732407

复制
相关文章

相似问题

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