后端任务和前端分离

时间:2018-07-20 06:37:25

标签: django django-rest-framework backend background-task

我将 Django Django Rest Framework 用于内部API,并将 Vue.js 用于前端。后端(API)和前端完全分开。

我需要运行一个后台任务(每次创建用户时),并且我正在考虑2种解决方案:

  1. (使用post_save信号)调用运行任务的函数。

请注意,此函数将调用第三方API。通话可能由于各种原因而失败,并且/或者可能会在大约20秒的长时间内运行。

  1. 创建后台任务

使用Redis或RabbitMQ或django-background-tasks。

我应该寻求哪种解决方案? 如果两种解决方案都可以接受,那么每种解决方案的局限性/优势是什么?

1 个答案:

答案 0 :(得分:0)

您可能需要django芹菜。这对于Django的后台任务来说是一个很好的软件包,您可以选择Redis或RabbitMQ作为代理,在我看来这些代理并不重要。

为什么这可以很好地解决您的问题?

  1. 这很容易安装,您只需要安装django celery和redis(我更喜欢redis),配置一些设置就可以了,并且现在有了异步功能。
  2. 您可能很快需要排定的任务,只需要安装其附加软件包即可。
  3. 您只需要构建类型函数并附加一个装饰器即可使其异步。

from celery import shared_task @shared_task def add(x,y): return X+y

并在代码中的任意位置调用它

add.delay()

你知道背景任务如何。