如何在django中运行后台任务,当它完成后,我可以将信息推送到前端。

时间:2017-09-28 08:28:34

标签: django background-task

由于我在views.py中的任务之一非常耗时,所以我认为我最好把它放在后台。但是,我想确保当这个任务完成时,我会在前端收到一些东西。我怎样才能做到这一点?我搜索并发现了django-channels,但是,我仍然无法将这两个目标结合在一起。希望有人能帮助我。

2 个答案:

答案 0 :(得分:1)

你基本上有两个选择:

您可以定期向客户请求长期运行任务的状态,并在完成后做出相应的响应。

或者您在客户端和服务器之间使用套接字,并在任务完成时通过套接字通知您的客户端。套接字的推荐选项之一是django-channels。它有什么问题吗?

答案 1 :(得分:0)

始终使用异步任务处理(如

)运行后台任务
  1. 芹菜
  2. DJANGO背景任务(https://github.com/arteria/django-background-tasks
  3. 推送通知使用

    1. Django的信道(的WebSockets)
    2. Django-webpush https://github.com/safwanrahman/django-webpush
    3. 轮询
    4. Django中的龙卷风(长开连接)或StreamingHttpResponse也可以解决
    5. 如果您认为难以维护的网页套件需要进行轮询。