天津做网站的哪家好,.net做的学校网站,设计商业网站应该做到什么,网络规划设计师教程第2版2021版pdf问题我有一个Django站点#xff0c;使用celeriRabbitMQ作为长时间运行任务的任务队列。我把结果存储在Redis中。我已经能够使用Celery的update_state在引导进度条中显示一个任务的进度#xff0c;并通过一个按钮向Redis DB发送ajax post来检索当前状态。在理想情况下#xf…问题我有一个Django站点使用celeriRabbitMQ作为长时间运行任务的任务队列。我把结果存储在Redis中。我已经能够使用Celery的update_state在引导进度条中显示一个任务的进度并通过一个按钮向Redis DB发送ajax post来检索当前状态。在理想情况下我想显示每个任务当前正在运行或最近完成是在Redis与它自己的进度条。目前我只能显示由我的小Click Here按钮启动的当前任务的进度。在我试着为进度条制作多个类但老实说我不知道该怎么做似乎找不到任何关于如何做这样的事情的东西。我试着上传尽可能多的代码。任何帮助将不胜感激在代码在网址.pyurlpatterns [url(r^poll_state$, poll_state, namepoll_state),url(r^do_task$, do_task, namedo_task),]在视图.py^{pr2}$在任务.pyfrom __future__ import absolute_import, unicode_literalsfrom celery import shared_taskfrom celery.decorators import taskfrom celery import current_taskfrom celery.result import AsyncResultimport celeryfrom .celery import appimport time#Task loops every half second to update the current statetask(bindTrue, ignore_resultTrue)def add(self):for i in range(101):time.sleep(0.5)self.update_state(statePROGRESS, meta{current: i, total: 100})在芹菜from __future__ import absolute_import, unicode_literalsimport osfrom celery import Celeryfrom django.conf import settings# set the default Django settings module for the celery program.os.environ.setdefault(DJANGO_SETTINGS_MODULE, yodaclaw.settings)app Celery(myAppName)# Using a string here means the worker doesnt have to serialize# the configuration object to child processes.# - namespaceCELERY means all celery-related configuration keys# should have a CELERY_ prefix.app.config_from_object(django.conf:settings, namespaceCELERY)# Load task modules from all registered Django app configs.# This allows you in shell to not have to import yodaclaw.tasksapp.autodiscover_tasks(lambda: settings.INSTALLED_APPS)app.taskdef debug_task(self):print(Request: {0!r}.format(self.request))在设置.py# Celery SettingsCELERY_BROKER_URL amqp://localhostCELERY_RESULT_BACKEND redis://localhost:6379/0CELERY_ACCEPT_CONTENT [application/json]CELERY_ACCEPT_CONTENT [json]CELERY_TASK_SERIALIZER jsonCELERY_TRACK_STARTED True在基准.py{% load static %}{% block title_outer %}{% endblock %}{% block meta %}{% endblock %}{% block stylesheets %}{% endblock %}{% block javascript %}{% endblock %}{% block extra_head %}{% endblock %}{% block body %}{% block nav_header %}{% endblock %}{% block nav_sidebar %}{% endblock %}{% block content_wrapper %}{% block content_header %}{% endblock %}{% block content_outer %}{% block messages %}{% endblock %}{% block content_block_wrap %}{% block content %}{% endblock %}{% endblock %}{% endblock %}{% endblock content_wrapper %}{% block nav_footer %}{% endblock %}{% if task_id %}Task ID: {{ task_id }}aria-valuenow0 aria-valuemin0 aria-valuemax100{% if task_id %} {{ task_id }} {% endif %}{% endif %}Click here!{% if task_id %}jQuery(document).ready(function() {var PollState function(task_id) {jQuery.ajax({url: poll_state,type: POST,data: task_id task_id,}).done(function(task) {if (task.current) {jQuery(.progress-bar).css({width: task.current %});jQuery(.progress-bar).html(task.current %);}else {jQuery(.status).html(task);};PollState(task_id);});}PollState({{ task_id }});}){% endif %}jQuery(#do-task).click( function() {jQuery.ajax({url: do_task,data: {},success: function(){jQuery.ajax({url: ,context: document.body,success: function(s, x) {jQuery(this).html(s);}});}})});{% endblock body %}{% block extra_foot %}{% endblock %}