如何在Google App Engine中根据用户参数安排重复的作业或任务?

时间:2017-03-10 10:18:33

标签: google-app-engine

我正在使用Google App Engine,我希望能够安排基于用户的工作'参数。

我知道这可以通过cron作业完成,但从用户的角度来看似乎不允许任何灵活性,但它只允许安排预定义的作业。

例如,假设我有一个新闻应用程序,用户可以订阅不同的主题:我希望管理员能够决定何时发送摘要电子邮件,例如,每天早上8点,我希望他成为能够编辑这个。

有什么能提供这个吗?

2 个答案:

答案 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间隔更接近,那么我只需创建一个任务以适当的延迟排队。

这种方法效果非常好,并且运行起来非常便宜。