是否有设计模式来安排将来发生的“事件”?

时间:2013-08-06 23:12:04

标签: python design-patterns web-applications scheduled-tasks

我正在开发一个Web应用程序,在发生特定事件时向用户发送短信。基本条件如下:

  1. 该事件不止一次发生,但不是在合理可预测的频率发生。
  2. 我可以随时预测该事件是否会在未来10天内发生
  3. 如果事件在该时间段内发生,我可以预测事件将在1秒内发生。
  4. 我想在事件发生前(约5分钟)向用户发送短信。

    将来某个时间“安排”方法调用(发送文本)的最佳方法是什么?

3 个答案:

答案 0 :(得分:1)

这取决于环境。乍一看,我认为 cron 正是您所寻找的;在你的服务器上创建一个每分钟调用一个脚本的crontab条目,然后这个脚本应该查找某个标志(在一个文件中,在数据库中,你认为合适的地方),看看是否有东西需要发送。

基本上,你需要一个队列(对于多个用户)和一个定时的php脚本。

请参阅https://en.wikipedia.org/wiki/Cron

答案 1 :(得分:0)

使用每分钟运行一次的cronjob,并在6分钟内查找未通知的任何事件

或使用像

这样的命令
future_pattern = "%M %H %d %m ? %Y"
command = 'python do_something.py'
evt_tim = datetime.datetime(2013,8,22,14,22) # aug 22,2013 @ 2:22pm
notify_time = evt_time - datetime.timedelta(minutes=5)
subprocess.call("%s  %s"%(notify_time.strftime(future_pattern),command)

或使用像twillio这样的服务 http://blog.iron.io/2012/10/how-to-schedule-sms-and-calls-on-twilio.html

答案 2 :(得分:0)

在JAVA中,我建议QUARTZ。 IS易于配置,并且支持持久性。