【问题标题】:Reading Celery task progress using AJAX polling使用 AJAX 轮询读取 Celery 任务进度
【发布时间】:2013-11-14 05:20:27
【问题描述】:

我有一个简单的 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 并配置 celery 以使用 -E 参数发送事件。

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

谢谢。

【问题讨论】:

    标签: django celery


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-12
      • 2015-10-19
      • 1970-01-01
      • 2016-05-28
      • 1970-01-01
      相关资源
      最近更新 更多