IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Celery+Django异步处理请求 -> 正文阅读

[Python知识库]Celery+Django异步处理请求


上一篇介绍了celery之后,我们根据它的整个工作流程来实现代码。

Celery目录

celery作为一个应用,我们有下面的目录结构:
在这里插入图片描述

main.py

存放启动一个celery任务的主要流程,包括:

  1. 创建Celery的主程序对象
  2. 将jango和celery结合,需要先启动django
  3. 加载celery配置
  4. 注册celery任务
  5. 最后通过终端命令运行
from celery import Celery

# 创建Celery的主程序对象
app = Celery("luffy")

# 将jango和celery结合,需要先启动django
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'luffyapi.settings.dev')
import django
django.setup()

# 加载配置
app.config_from_object("mycelery.config")

# 注册celery任务
app.autodiscover_tasks(["mycelery.sms"])

# 通过终端来启动celery
# celery -A mycelery.main worker --loglevel=info

config.py

如注释,主要是设置任务队列的url地址、结果队列地址,我们这里用redis来存放:

# 设置任务队列的url地址
broker_url = "redis://127.0.0.1:6379/14"
# 设置结果队列
result_backend = "redis://127.0.0.1:6379/15"

tasks.py

必须这么命名。通过装饰器来申明这是一个要运行的task,并给这个task起个名字。这里封装好要异步处理的代码:

from mycelery.main import app
from luffyapi.libs.yuntongxun.sms import CCP
from luffyapi.settings import constants

import logging
log = logging.getLogger("django")

@app.task(name="send_sms")
def send_sms(mobile, sms_code):
    """发送短信"""
    ccp = CCP()
    ret = ccp.send_template_sms(mobile, [sms_code, constants.SMS_EXPIRE_TIME//60], constants.SMS_TEMPLATE_ID)
    if not ret:
        # log.error(ret)
        log.error("用户注册短信发送失败!手机号:%s" % mobile)
        # return {"message" : "发送短信失败"}

views.py

将views.py中实现的逻辑代码换成下面酱紫,便可以异步执行了。

from mycelery.sms.tasks import send_sms
# send_sms本身没有delay()方法的,是通过装饰器来传到send_sms中的
send_sms.delay(mobile, sms_code)

启动celery

在终端执行:

celery -A mycelery.main worker --loglevel=info

这就实现了发送验证码的异步请求。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-18 17:36:48  更:2022-04-18 17:36:57 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 17:37:34-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码