有什么方法可以安排类似于 Django 中的 MySQL 事件的事件吗?



我有一个数据库事件与我的 Django 应用程序(托管在 apache2 上(一起使用来更新我的一个表中的日期字段。

此日期字段会影响表中的另一列,Inspection_Due?该列根据行中的日期返回"是"或"否"。我想做的不仅仅是更新这里的表,这就是为什么我想远离 SQL 事件。我希望能够在更改时发送电子邮件,文本,通知等。

所以我想知道是否有任何现有的方法可以在 Django 中创建后台事件,而无需我在数据库中的 Date 列更改时打开任何视图来实现这一点。

是的,你可以使用 Django Celery。Celery 是基于分布式消息传递的异步任务队列/作业队列。 它专注于实时操作,但也支持调度。

以下是姜戈芹菜的第一步。 您可以在模型中创建一个post_save方法,您将在其中运行一个异步任务,该任务将根据需要发送邮件。

例如:

@app.task()
def your_celery_task_which_sends_mail(id):
your_object = YourModel.objects.get(id=id)
#do stuff, send mails, check if changed
class YourModel(models.Model)
yourfields...

@receiver(post_save, sender=YourModel)
def save_profile(sender, instance, **kwargs):
your_celery_task_which_sends_mail.delay(instance.id)

最新更新