【问题标题】:How do I run tasks in the background using Django?如何使用 Django 在后台运行任务?
【发布时间】:2020-10-24 03:33:59
【问题描述】:

我在 Django 中有一个端点,它启动一个需要很长时间才能完成的函数。我不希望请求等到此功能完成。

def MyRequest(APIView):
    def get(self, request, *args **kwargs):
        a_function_which_takes_really_long_time()
        return Response({"message" : "We're Working on it."})

我尝试将 asyncio 与 Django Asynchronous Support 一起使用。还在这里尝试了python线程。但是所有这些都在发出请求,直到功能完成。

我知道我们可以使用 Celery 轻松实现这一目标。但这种方法需要我使用消息代理,例如 Redis、RabbitMQ 或任何其他我不应该使用的类似服务器。

【问题讨论】:

    标签: python django asynchronous celery


    【解决方案1】:

    在我看来,将 celery 与 django 一起使用非常简单且值得推荐。我不知道你为什么反对使用消息代理,你建议的两个选项都是非常稳定和广泛使用的项目。

    但是,如果您仍然有代理限制,我可以推荐apscheduler,它不使用中间代理

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多