Send tasks to Celery from Django
使用 Mysql 做为 Celery 的 broker,接受从 Django 发出的 Celery Task
基于已有成功运行的 Django 项目,开始下面的配置
1.安装 Celery 相关资源
pip3 install celery==5.1.2
pip3 install SQLAlchemy==1.4.31
2.Celery 项目代码
项目结构
tasks
├── settings.py
└── tasks.py
settings.py
# mysql
BROKER_URL = 'sqla+mysql://xxx'
CELERY_RESULT_BACKEND = 'db+mysql://xxx'
tasks.py
from celery import Celery
app = Celery('tasks')
app.config_from_object('settings')
@app.task
def add(x, y):
print(x, y)
3.Django 项目代码
xxViews.py
import json
from django.http import JsonResponse
from celery import Celery
celery = Celery('sender', broker='sqla+mysql://xxx')
def celeryTest(request):
input = json.loads(json.dumps(request.GET))
celery.send_task('tasks.add', (input['x'], input['y']))
return JsonResponse (
{
'input': input
}
)
4.测试
1 在浏览器里输入 view 对应的 url
url 上带上参数?x=100&y=200
2 另一边的 celery 输出 x,y 的值