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

1

2 另一边的 celery 输出 x,y 的值

2