python项目_使用异步功能,celery

Posted jalen-tian

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python项目_使用异步功能,celery相关的知识,希望对你有一定的参考价值。

1.安装celery

pip install -U celery -i https://pypi.douban.com/simple    ##-U是指update的意思

2.创建mycelery目录

luffyapi/
├── mycelery/
    ├── config.py     # 配置文件
    ├── __init__.py   
    ├── main.py       # 主程序
    └── sms/          # 一个目录可以放置多个任务,该目录下存放当前任务执行时需要的模块或依赖
        └── tasks.py  # 任务的文件,名称必须是这个!!!

3.main.py代码编写如下


# 主程序
import os
from celery import Celery
# 创建celery实例对象
app = Celery("luffy")


# 把celery和django进行组合,识别和加载django的配置文件
import os
os.environ.setdefault(‘DJANGO_SETTINGS_MODULE‘, ‘luffyapi.settings.dev‘)
import django
django.setup()


# 通过app对象加载配置
app.config_from_object("mycelery.config")


# 加载任务
# 参数必须必须是一个列表,里面的每一个任务都是任务的路径名称
# app.autodiscover_tasks(["任务1","任务2"])
app.autodiscover_tasks(["mycelery.sms","mycelery.mail"])


# 启动Celery的命令
# 切换目录到mycelery根目录下启动
# celery -A mycelery.main worker --loglevel=info

 

4.配置文件config.py代码编写如下

# 任务队列的链接地址
broker_url = redis://127.0.0.1:6379/15
# 结果队列的链接地址
result_backend = redis://127.0.0.1:6379/14

5.创建一个任务文件sms/tasks.py,并创建任务,代码:

# celery的任务必须写在tasks.py的文件中,别的文件名称不识别!!!
from mycelery.main import app

@app.task  # name表示设置任务的名称,如果不填写,则默认使用函数名做为任务名
def send_sms():
    print("发送短信!!!")

@app.task  # name表示设置任务的名称,如果不填写,则默认使用函数名做为任务名
def send_sms2():
    print("发送短信任务2!!!")

6.最终来调用异步任务

# 1. 声明一个和celery一模一样的任务函数,但是我们可以导包来解决
from mycelery.sms.tasks import send_sms

# 2. 调用任务函数,发布任务
send_sms.delay(mobile,sms_code)
# send_sms.delay() 如果调用的任务函数没有参数,则不需要填写任何内容

 

以上是关于python项目_使用异步功能,celery的主要内容,如果未能解决你的问题,请参考以下文章

python 关于celery的异步任务队列的基本使用(celery+redis)采用配置文件设置

Django-Python3-Celery 异步任务/定时任务

Django项目中使用celery做异步任务

celery异步发送短信

平台项目 ~ celery 异步之异步处理功能

django使用celery异步发送短信