我正在使用Google App Engine,我希望能够安排基于用户的工作'参数。
我知道这可以通过cron作业完成,但从用户的角度来看似乎不允许任何灵活性,但它只允许安排预定义的作业。
例如,假设我有一个新闻应用程序,用户可以订阅不同的主题:我希望管理员能够决定何时发送摘要电子邮件,例如,每天早上8点,我希望他成为能够编辑这个。
有什么能提供这个吗?
答案 0 :(得分:6)
您可能想要标记Issue 3638: Cron jobs to be scheduled programatically
与此同时,您可以编写自己的实现:定期运行一个通用的cron作业(每1分钟是最好的分辨率),并在cron作业内检查用户编程的调度数据是否存在于某处(例如在数据存储区中),如果需要,触发执行任何需要执行的内容,无论是内联还是将任务排入某个任务队列。
如果需要,甚至可以在1分钟内推动调度解决方案,请参阅High frequency data refresh with Google App Engine
答案 1 :(得分:3)
对于我的债务追踪应用DebtsTracker.io,我已手动实施。
当用户创建债务记录时,他可以指定存储在未编制索引的DueDate
和索引ReminderDateTime
字段中的截止日期。
我有一个cron,用ReminderDateTime < today
查询记录并发送通知。发送通知后,ReminderDateTime
将设置为null或远期,因此未在下一次cron运行中选择它。如果用户点击Remind me again
我将ReminderDateTime
更新为某个日期(用户决定何时)。
如果ReminderDateTime
比cron间隔更接近,那么我只需创建一个任务以适当的延迟排队。
这种方法效果非常好,并且运行起来非常便宜。