# 安装 由于版本支持情况 使用时版本不要太高 可能会有冲突
在项目中使用 可以创建一个celeryconfig.py文件
import djcelery
djcelery.setup_loader()
CELERY_IMPORTS=(
'app.tasks',
)
#有些情况可以防止死锁
CELERYD_FORCE_EXECV=True
# 设置并发worker数量
CELERYD_CONCURRENCY=4
#允许重试
CELERY_ACKS_LATE=True
# 每个worker最多执行100个任务被销毁,可以防止内存泄漏
CELERYD_MAX_TASKS_PER_CHILD=100
# 超时时间
CELERYD_TASK_TIME_LIMIT=12*30
在app中创建tasks
from celery import task
@task
def add(a,b):
with open("a.text",'a',encoding='utf-8') as f:
f.write(" this is abc!!")
print(a+b)
视图函数views.py
from django.shortcuts import render,HttpResponse
from app.tasks import add
from datetime import datetime
def test(request):
ctime = datetime.now()
utc_ctime = datetime.utcfromtimestamp(ctime.timestamp())
from datetime import timedelta
time_delay = timedelta(seconds=5)
task_time = utc_ctime + time_delay
result = add.apply_async(args=[4, 3], eta=task_time)
print(result.id)
return HttpResponse('hello word!')
settings.py中配置
'djcelery',
'app'
]
BROKER_BACKEND='redis' //这里也可以不使用redis,使用其他队列也可以rabbitMQ
BOOKER_URL='redis://127.0.0.1:6379/1'
CELERY_RESULT_BACKEND='redis://127.0.0.1:6379/2'