【问题标题】:Django Refresh database until end of transactionDjango刷新数据库直到事务结束
【发布时间】:2019-01-24 02:51:07
【问题描述】:

我有一个很长的任务,那就是向数据库表中添加许多记录。 在表中,有一个名为“end”的字段。在任务完成之前,此字段将为空。任务完成后,我会在“结束”字段中写入一个值。

我可以有一个 HTML 页面,每 5 秒刷新一次页面,其中包含表中的项目,直到字段“end”有值?

有人有这方面的示例脚本吗?

【问题讨论】:

  • 你如何运行你的long task ?你Celery 吗?
  • 芹菜可以

标签: python django python-3.x django-models


【解决方案1】:

这是一个非常具体的问题,我认为没有现成的例子。

但是你可以简单地在你的 HTML 模板中使用 JavaScript:

{% if end_column_empty %}

 <script>    
   setTimeout(function(){
     window.location.reload(1);
   }, 5000);
 <script>

{% else %}
 Table is Complete.
{% endif %}

上面的代码假设您使用 Celery 或以某种方式异步执行长 SQL 任务。如果您的 SQL-Job 需要 50 秒才能完成,上面的代码将不起作用,因为它会在 5 秒后中断。

如果您不想使用 Celery,您可以按原样执行 SQL-Job,同时使用 jQuery 更新表格 - 为此您需要通过 REST API 访问您的表格数据。

【讨论】:

    【解决方案2】:

    您可以尝试使用 websocket。套接字正在侦听并等待数据。 Django 使用表单 django-channels

    【讨论】:

      猜你喜欢
      • 2013-08-04
      • 1970-01-01
      • 2013-02-15
      • 2014-07-14
      • 2011-12-06
      • 2013-10-25
      • 1970-01-01
      • 2014-07-04
      • 2011-04-05
      相关资源
      最近更新 更多