使django应用程序在特定时间通知人们

时间:2015-05-22 09:38:24

标签: python django crontab

  

简短说明

如何在创建活动一段时间后让我的应用向人员列表发送通知?

  

详细说明

我的网站允许Bob放置他想在线销售的东西。有几个人看到它并想要买它。如果6小时后没有人对此感兴趣,应通过电子邮件通知卖家。

  

解决方案我发现我觉得很脏

每分钟运行一次crontab,查看人们没有参与的所有文章。缺点:不太准确+扫描整个数据库+我的应用外部......

有更好的解决方案吗?

2 个答案:

答案 0 :(得分:4)

您要找的是https://pypi.python.org/pypi/django-cron/0.3.6

基本上,您在INSTALLED_APPS中使用django_cron作为

INSTALLED_APPS = (
    'django_cron',)

通过在项目根目录中创建cron.py来设置cron作业

class SixHourEmailUpdate(CronJobBase):
    code = 'six_hour_reminder_cron'
    schedule = Schedule( run_every_mins = 360 ) # 6 hours

    def do(self):
         # Your email sending 

此外,您还必须设置一个可以每隔一段时间运行一次的cron作业。

*/5 * * * * bash /home/tester/my_cron/cron.sh

cron.sh inturn调用

python /home/tester/app/my_app/manage.py runcrons

此处有更多文档 http://django-cron.readthedocs.org/en/latest/sample_cron_configurations.html#run-at-times-feature

答案 1 :(得分:2)

作为选项1,您可以编写将由crontab使用的custom management command

选项2(实际上也与cron工作有关)是使用Celery或类似工具(在你的情况下我更喜欢选项1)。

请随时提问,我会更新我的回答