django-celery异步消息队列

安装

django-celery

1
pip install django-celery

配置

配置django settings.py文件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import djcelery
from celery import platforms
INSTALLED_APPS = [
'djcelery',
]
# celery 任务队列
CELERY_IMPORTS = ('celery_tasks.task',)
BROKER_URL = 'redis://127.0.0.1:6379/4' # 根据实际情况配置
CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/4' # 存储任务的状态和返回值,根据实际情况配置
CELERY_ACCEPT_CONTENT = ['pickle', 'json', 'msgpack', 'yaml']
CELERY_TASK_RESULT_EXPIRES = 60 * 60 * 24 * 30
CELERY_MAX_TASKS_PER_CHILD = 100 # 每个worker最多执行万100个任务就会被销毁,可防止内存泄露
CELERY_TASK_TIME_LIMIT = 60 * 10 # 单个任务的运行时间不超过此值,否则会被SIGKILL 信号杀死
djcelery.setup_loader()
platforms.C_FORCE_ROOT = True

创建task

task.py

1
2
3
4
5
6
7
import time
from celery import task
@task
def test_task():
time.sleep(10)
return True

启动work

1
python manage.py celery worker -c 4 -l info

当前网速较慢或者你使用的浏览器不支持博客特定功能,请尝试刷新或换用Chrome、Firefox等现代浏览器