使用 AJAX 轮询读取芹菜任务进度



我有一个简单的 Celery 任务,可以在数据库中写入一些进度数据。我需要使用 django 视图阅读此进度更新以向用户提供更新。

我使用自己的表来编写进度,并使用客户端的 AJAX 轮询读取它。现在它不起作用,我不知道原因。

我的数据库后端是PostgreSQL。我尝试使用以下方法更改事务隔离级别(在读取视图中):

from django.db import transaction
#4 is READ UNCOMITTED
transaction.connections.all()[0].connection.set_isolation_level(4)

我不确定这是否会更改与数据库的新连接的隔离级别或当前事务正在使用的连接,但它似乎不起作用。 在任务完成并提交事务之前,无法读取进度数据。

这是我尝试过的第二种方法。

我还发现了update_state,我使用 update_state 编写所有进度更新,但它似乎并没有实际写入数据库中。我运行 celerycam 并将芹菜配置为使用 -E 参数发送事件。

我想知道更新进度日并检索它的正确方法是什么。

谢谢。

经过一番谷歌搜索,我发现"READ UNCOMMITTED"在PostgreSQL中没有实现,而且很可能在未来不会实现。

我还找到了一个扩展程序,允许您读取脏数据。这是项目输入链接描述的一部分,但这迫使我使用原始sql来获取我想要的数据。

相关内容

  • 没有找到相关文章

最新更新