Django Celery的任务状态监控

2023-04-11 00:00:00 django 状态 监控

Django Celery是一个强大的异步任务队列库,通过它可以将一些耗时的任务分发给后台执行,提高系统的并发处理能力。但是,在一些长时间执行的任务中,我们也希望能够实时监控任务的状态,以便于及时处理问题。那么,如何实现Django Celery的任务状态监控呢?

一、安装模块

首先需要安装Worker状态监控模块flower:

pip install flower

二、配置

1.在Django项目的settings.py文件中加入:

INSTALLED_APPS = (
    ...
    'djcelery',
    'flower',
)

BROKER_URL = 'amqp://guest:guest@localhost:5672//'
CELERYBEAT_SCHEDULER='djcelery.schedulers.DatabaseScheduler'
CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'

...

这里主要是配置Celery的Broker地址为本地,并使用django-celery的数据库调度器进行调度。

2.修改Django项目的urls.py文件:

from django.conf.urls import include, url
from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^flower/', include('flower.urls')),
]

这里主要是将flower的web ui页面集成到Django项目中。

3.启动flower:

celery -A proj flower

注意:-A参数后的proj是指当前Django项目的名称。

三、使用

1.创建一个异步任务

from __future__ import absolute_import  
import time
from celery import Celery  

app = Celery('proj') # 任务队列实例

@app.task  
def add(x, y): # 定义任务
    for i in xrange(5):
        time.sleep(1)
    return x + y

2.调用异步任务

from proj.tasks import add
result = add.delay(2,2) # 异步调用任务
print "任务ID:", result.id # 输出任务ID

3.查看任务状态

打开浏览器访问http://localhost:5555

在此界面中,可以看到当前所有任务的状态,包括已完成的任务、正在执行的任务、失败的任务等。

这样就能够方便地实现Django Celery的任务状态监控了。

相关文章