您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – Django芹菜使用Ajax检索任务状态

5b51 2022/1/14 8:23:14 python 字数 2658 阅读 589 来源 www.jb51.cc/python

我正在使用芹菜2.5.3和 django芹菜 – 2.5.5.我正在使用 mysql作为经纪人. 这是一个场景,当用户请求我在工作组中排队从另一个站点获取数据的作业时.这可能需要几分钟,具体取决于数据的大小.一旦作业开始,我们必须显示加载器图像.当工人完成下载数据(将采用html格式)时,我必须用检索到的数据替换加载器图像. 我们使用芹菜的原因是有时脚本需要超过30秒来完成和超时. 目前我打算使用

概述

这是一个场景,当用户请求我在工作组中排队从另一个站点获取数据的作业时.这可能需要几分钟,具体取决于数据的大小.一旦作业开始,我们必须显示加载器图像.当工人完成下载数据(将采用html格式)时,我必须用检索到的数据替换加载器图像.

我们使用芹菜的原因是有时脚本需要超过30秒来完成和超时.

目前我打算使用ajax调用来检查作业的状态,这个函数将以固定的间隔使用.

我经历过一些问题,这就是我提出的问题

为了启动worker,我正在使用这段代码

def testCelery(request):
   result=testadd.apply_async()
   return HttpResponse(str(result.task_id))

这会将task_id返回给客户端并使用ajax我将向服务器发送请求以检查作业是否已完成

def getStat(request,task_id):
      res = AsyncResult(task_id)
      s=res.ready()
      if s==True:
         return HttpResponse(str(res.get()))
      else:
         return HttpResponse(str(s))

我不确定这是否是正确的方法,或者它在实时场景中的表现如何.

请指教.

编辑:使用djcelery视图检查状态

好吧,我修改了我的代码,因为bruno建议现在看起来像

from djcelery import views as celery_views
def getStat(request,task_id):
    return celery_views.is_task_successful(request,task_id)

它似乎正在发挥作用.并且仍然使用task_id的ajax调用来检索状态.

例如,将以下内容添加到urls.py:

urlpatterns += patterns('djcelery.views',url(r'^task/status/(?P<task_id>.+)/$','task_status',name='task-status')
)

总结

以上是编程之家为你收集整理的python – Django芹菜使用Ajax检索任务状态全部内容,希望文章能够帮你解决python – Django芹菜使用Ajax检索任务状态所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶