gpt4 book ai didi

django - 在 Django 模板中将 celery 任务的结果返回给客户端

转载 作者:可可西里 更新时间:2023-11-01 11:15:31 24 4
gpt4 key购买 nike

所以我正在尝试完成以下任务。用户浏览网页,同时有一个任务在后台运行。当任务完成时,它应该返回 args,其中 args 之一是 flag: True 以触发 javascript 并且 javascript 显示模态形式。

我之前在没有异步任务的情况下测试过它并且它可以工作,但现在使用 celery 它只是将结果存储在数据库中。我对 tornado-celery 和相关的东西做了一些研究,但是一些组件,比如 tornado-redis 不再被维护,所以我认为使用它是不合适的。

那么我有什么选择,谢谢?

最佳答案

如果我没有理解错的话,那么你想要从服务器端向客户端传回一些东西。您通常有以下三种选择:

1) 向服务器发出等待已久的请求 - 有点糟糕。跳过细节,如果未配置为处理该问题,它将使您的网络服务器陷入困境,这将使您的网站在性能测试中得分低,如果请求失败,一切都会失败。
2)以一定时间间隔(0.2 秒,类似的时间)用大量请求轮询服务器 - 更好。它会增加流量,但请求会很小,不会对网站的性能造成太大影响。如果你设置了一个很长的时间间隔来不让服务器加载无意义的请求,那么用户会看到数据有一点延迟。从好的方面来看,即使连接中断,这也不会失败(如果编写正确)。
3) Websockets,服务器可以在需要的时候用任何消息访问客户端——很好,但需要一些时间来习惯。如果你想尝试,你可以使用 django-channels 这是一个很好的 Django websockets 库。

如果我没有正确理解你,这不是手头的问题,你正在想办法从 Celery 任务中获取数据到 Django,那么你可以存储 Celery 任务 ID-s 并使用 ID-s首先检查任务是否完成,然后从 Celery 查询数据。

关于django - 在 Django 模板中将 celery 任务的结果返回给客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49680845/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com