关于 Django 中 Celery 的使用
在学习 Celery 的基本使用过程中记录一下基础使用方法。
更多详细内容可以参照这个视频:https://www.bilibili.com/video/BV1Di4y1d7AD
事先需要安装 celery 库,以及 Redis 要配置好。
在项目的根目录下建立一个新的文件夹,名字是任意的。
然后创建以下文件:(urls 不需要,在别的文件夹建立也行)
在 main 中:
from celery import Celery
import os
os.environ["DJANGO_SETTINGS_MODULE"] = "visualized_management_system.settings"
app = Celery("test", backend="redis://127.0.0.1:6379/10")
app.config_from_object('test_celery.config')
app.autodiscover_tasks([
"test_celery.sms"
])
在 config 中:
# 代理
broker_url = "redis://127.0.0.1:6379/9"
在 task 中:
from time import sleep
from test_celery.main import app
@app.task
def send(a, b):
print("start")
print(a, b)
sleep(20)
print("over")
然后开启 celery,在终端中输入:
注意, -P eventlet 是 windows 专有的,linux 环境与 mac 环境不需要。eventlet 需要 pip 安装。
celery -A test_celery.main worker -l info -P eventlet
接下来在 views 里面添加:
from django.http import JsonResponse
from django.views import View
from test_celery.sms.tasks import send
class SendSMSView(View):
def get(self, request):
result = send.delay("abc", 6179)
print(result)
return JsonResponse({"task_id": result.task_id})
url 为 task/send_sms/,这个自己设置就 ok,按 django 项目的常规操作来就 ok。
发送请求,在终端可以看到:
前端返回可以看到:
(原谅我没截到对应的任务号,懒)
至此,我们已经实现了异步任务。