用户指定时间的 Django cron-job

Django cron-job for user-specified times

我想根据用户指定的时间发送通知。 IE,在 google 日历中,当我的任务时间到了时,我可以收到一条短信。

这个 运行 的解决方案是一个 cron 作业,让它每分钟执行一次并扫描哪些用户的时间等于当前时间?

因为你用 celery 标记了你的问题,我假设你有芹菜 运行ning。您可以使用 eta kwarg 到 apply_async() 在特定时间将任务安排到 运行,请参阅此处:

http://docs.celeryproject.org/en/latest/userguide/calling.html#eta-and-countdown

如果您需要使用 cron 作业,我不会检查 notification_time == current_time,而是使用模型上的布尔 is_sent 字段跟踪未发送的通知并检查 notification_time <= current_time and not is_sent .这似乎不太容易出错。您还可以添加某种形式的检查,以防止在您的系统出现故障几个小时的情况下大量发送通知。