【问题标题】:Is there a design pattern for scheduling an "event" to happen in the future?是否有安排未来发生的“事件”的设计模式?
【发布时间】:2013-08-06 23:12:04
【问题描述】:

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

  1. 事件发生不止一次,但频率不合理。
  2. 我可以随时预测该事件是否会在未来 10 天内发生
  3. 如果事件发生在该时间段内,我可以预测事件将在 1 秒内发生的时间。

我想在事件发生前(约 5 分钟)向用户发送短信。

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

【问题讨论】:

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


    【解决方案1】:

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

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

    https://en.wikipedia.org/wiki/Cron

    【讨论】:

      【解决方案2】:

      使用每分钟运行一次的 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

      【讨论】:

        【解决方案3】:

        在 JAVA 中我会推荐 QUARTZ。 IS 易于配置,并且支持持久性。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2023-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-12-17
          • 1970-01-01
          相关资源
          最近更新 更多