使用AJAX轮询读取Celery任务进度

时间:2013-11-03 13:13:43

标签: django celery

我有一个简单的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参数发送事件。

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

谢谢你。

1 个答案:

答案 0 :(得分:1)

经过一些谷歌搜索后,我发现PostgreSQL中没有实现“READ UNCOMMITTED”,很可能将来也不会实现。

我还找到了一个允许您读取脏数据的扩展名。它是项目enter link description here的一部分,但这迫使我使用原始sql来获取我想要的数据。