繁体   English   中英

使Django应用在特定时间通知人们

[英]Making django app notify people at specific time

简短的介绍

在创建事件一定时间后,如何使我的应用将通知发送到人员列表?

详细描述

我的网站允许Bob投放他想在线销售的商品。 有几个人看到它并想购买它。 如果6小时后没有人感兴趣,则应通过电子邮件通知卖方。

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

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

有更好的解决方案吗?

您正在寻找的是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反过来调用

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,您可以编写将由crontab使用的自定义管理命令

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

请随时提问,我将更新答案

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM