Django实时实时通知系统

时间:2020-05-28 06:25:10

标签: django django-models

我正在尝试创建一个通知系统,该通知系统基本上在完成特定操作或到达日期时通知用户或超级用户。

假设我有一个具有日期时间字段的模型。我希望我的系统在该日期时间离我5天零1分钟时给我发送电子邮件,并且显然适用于该模型的所有对象。或者说我想在该日期时间发送该通知电子邮件。另外,我需要这种动态方式,以便可以更改或删除这些通知的条件,并且可能在同一模型上具有多个通知条件。

现在,我确实考虑了调度任务(我现在还真的不知道该怎么做),但是我认为这确实会降低系统的速度,比如说数百个模型对象,甚至数千个。

我来到这里并打扰这个令人惊奇的社区的另一个问题是我想了解以下内容:

  • 是否有一个已有的Django应用程序已执行此操作,但是经过数小时的搜索却找不到?

  • 如果不是,调度任务是唯一的选择吗?如果是这样,能否获得引用链接?尽管我猜测安排太多任务可能很糟糕(再次,我一无所知,我也很可能错了)。如果是这样的话,您对惊人的人有何建议?

感谢您的阅读。我非常感谢这个社区。

2 个答案:

答案 0 :(得分:1)

我认为您想要的不是在Django方面,而是在python中以任何方式可以在任何地方运行控制台应用程序,而无需弯腰就可以运行它,您可以随心所欲地运行它,还可以拥有安排任务的时间,可以设置运行python文件的时间

答案 1 :(得分:0)

您需要安排任务。您可以使用django crontab创建计划任务(定时作业)。设置非常容易。您可以每分钟运行一次cron作业,以检查数据库中您关心的datetimefield并采取所需的操作。如果您正确查询数据库,它应该不会很昂贵,但除非确实需要,否则我建议不要每分钟运行一次cron作业,除非您拥有专用服务器并且不必像在无服务器环境中那样为执行时间付费。 / p>

摘要

  1. 对于静态cronjob,您可以django-cron-tab
  2. 用于动态cronjobs 您可以django-celery-beat

借助Django celery beat,您可以将定期任务计划存储在数据库中。可以从Django Admin界面管理定期任务,您可以在其中创建,编辑和删除定期任务以及应该执行的频率。

相关问题