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

sma*_*ber 1 python django cron

简短的介绍

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

详细描述

我的网站允许鲍勃把他想卖的东西放在网上。有很多人看到它并想购买它。如果 6 小时后无人感兴趣,应通过电子邮件通知卖家。

解决方案我发现我认为很脏

每分钟运行 crontab 来检查人们不感兴趣的整篇文章。缺点:不太准确+扫描整个数据库+我的应用程序外部...

有更好的解决方案吗?

Hit*_*ani 5

您正在寻找的是https://pypi.python.org/pypi/django-cron/0.3.6

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

INSTALLED_APPS = (
    'django_cron',)
Run Code Online (Sandbox Code Playgroud)

通过在项目根目录中创建 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 
Run Code Online (Sandbox Code Playgroud)

此外,您还必须设置一个 cron 作业,其中的内容会每隔一段时间运行一次。

*/5 * * * * bash /home/tester/my_cron/cron.sh
Run Code Online (Sandbox Code Playgroud)

cron.sh 依次调用

python /home/tester/app/my_app/manage.py runcrons
Run Code Online (Sandbox Code Playgroud)

更多文档在这里 http://django-cron.readthedocs.org/en/latest/sample_cron_configurations.html#run-at-times-feature