我写了一个python脚本,允许用户输入消息,他的电子邮件和时间,他们想要发送的电子邮件。这些都存储在mysql数据库中。
但是,如何让脚本在上述时间和日期执行?它需要cron作业吗?我的意思是说,在4月20日的2:15,脚本将在数据库中搜索2:15的所有时间,并发送这些电子邮件。但是对于2:16的电子邮件呢?
我使用的是一个共享主机提供,所以不能有一个持续运行的脚本。
谢谢
发布于 2010-04-29 03:47:40
如果你不能拥有一个持续运行的脚本,那么一定会有什么东西触发它,所以这必须依赖于你的操作系统内部。在unix环境中,正如您自己所述,cron作业可以完成此任务。
设置cron来运行脚本,并让脚本等待给定的时间,然后继续运行和发送,直到下一封电子邮件超过这个给定的时间。然后让脚本为新的唤醒时间添加一个新的cron作业。
发布于 2010-04-29 04:52:59
看起来这个django应用程序是专门为你这种情况的人做的。
http://code.google.com/p/django-cron/
而且,你的设计似乎有一点瑕疵。如果它在2:15运行,你不会想只发送应该在2:15发送的电子邮件,而是所有过去应该发送但没有发送的电子邮件。
您的数据库应该: A.在条目发送后将其删除,或者B.在数据库表上定义一个列来存储是否已发送。那么你的逻辑应该利用这一列。
发布于 2010-04-29 05:53:55
每分钟做一次cronjob就可以做到这一点。如果你正在考虑这一点,你可能会注意两件事:
1-每分钟预计发送多少封电子邮件?如果您发送一封电子邮件需要1秒钟,而您每分钟有100封电子邮件,那么您将无法完成队列。
2-如果一个作业在最后一个作业完成之前开始,会发生什么情况?注意不要发送两次电子邮件。您需要确保第一个进程结束(风险:最终可能会丢弃一封电子邮件),避免启动下一个进程(风险:第一个进程挂起整个队列),或者让它们并行工作(风险:同步问题)。
如果你采纳了daramarak的建议--让你的脚本在结束时添加一个新的cron作业--如果出现一个错误,你就会有整个系统崩溃的风险。
https://stackoverflow.com/questions/2732407
复制相似问题