关于 Django 中 Celery 的使用

关于 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。

发送请求,在终端可以看到:

在这里插入图片描述

前端返回可以看到:

(原谅我没截到对应的任务号,懒)

在这里插入图片描述

至此,我们已经实现了异步任务。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django-Celery是一个用于在Django应用集成Celery任务队列的插件。它允许你将耗时的任务异步执行,从而提高应用的性能和响应速度。下面是一些使用Django-Celery的步骤: 1. 安装CeleryDjango-Celery:首先,确保你已经安装了CeleryDjango-Celery。你可以通过运行以下命令来安装它们: ``` pip install celery django-celery ``` 2. 配置Celery:在Django项目的`settings.py`文件,添加以下配置: ```python # settings.py # 配置Celery Broker(消息代理) BROKER_URL = 'amqp://guest:guest@localhost:5672//' # 配置Celery Backend(结果存储) CELERY_RESULT_BACKEND = 'db+sqlite:///results.sqlite' # 配置Celery Beat(定时任务) CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers.DatabaseScheduler' ``` 请根据你的实际情况修改上述配置。 3. 创建Celery App:在你的Django项目,创建一个名为`celery.py`的文件,并添加以下代码: ```python # celery.py from celery import Celery app = Celery('your_project_name') # 配置Celery app.config_from_object('django.conf:settings', namespace='CELERY') # 自动从Django app加载任务 app.autodiscover_tasks() ``` 确保将`your_project_name`替换为你的项目名称。 4. 创建任务:在Django app创建一个任务。例如,你可以在你的app目录下创建一个名为`tasks.py`的文件,并添加以下代码: ```python # tasks.py from celery import shared_task @shared_task def add(x, y): return x + y ``` 这是一个简单的任务示例,将两个数字相加并返回结果。 5. 启动Celery Worker:运行以下命令来启动Celery worker: ``` celery -A your_project_name worker --loglevel=info ``` 确保将`your_project_name`替换为你的项目名称。 6. 调用任务:在你的Django应用程序,你可以通过导入任务函数并调用它来触发任务的执行。例如: ```python from your_app.tasks import add result = add.delay(1, 2) ``` 这里使用了`delay()`方法来异步调用任务。你也可以使用`apply_async()`方法来更精确地控制任务的执行。 这些是使用Django-Celery的基本步骤。你还可以配置更多高级选项,如任务重试、任务结果存储等。请参考Django-Celery的官方文档以获取更多详细信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值