搜索
简帛阁>技术文章>Celery异步任务

Celery异步任务

Celery异步任务

(1)安装celery

pip install celery==4.2.1

(2)celery使用

在项目适当位置创建celery_tasks目录用于保存celery异步任务。

在celery_tasks目录下创建config.py文件,用于保存celery的配置信息,配置内容如下:

broker_url = "redis://127.0.0.1/14" # 这里使用的14号库

在celery_tasks目录下创建main.py文件,用于作为celery的启动文件

from celery import Celery
# 为celery使用django配置文件进行设置
import os
if not os.getenv('DJANGO_SETTINGS_MODULE'):
os.environ['DJANGO_SETTINGS_MODULE'] = 'meiduo_mall.settings.dev'
# 创建celery应用
app = Celery('meiduo') # meiduo为应用名,可以修改
# 导入celery配置
app.config_from_object('celery_tasks.config')
# 自动注册celery任务
app.autodiscover_tasks(['celery_tasks.sms']) # 此处可以添加多个任务

这里举一个celery异步发短信的例子:

在celery_tasks目录下创建sms目录,用于放置发送短信的异步任务相关代码

在celery_tasks/sms/目录下创建send_messages.py文件,定义发短信的函数,内容如下:

import requests
# 接口地址
url = 'http://106.ihuyi.com/webservice/sms.php?method=Submit'
# 这里使用的是互亿无线的短信服务,不同的短信服务,api是不相同的,根据接口文档进行编写
def send_message(code, mobile):
# 定义请求的数据
values = {
'account': 'C7*******', # 自己的短信平台账号
'password': '7ff8*************', # 短信平台账号密码
'mobile': mobile, # 目标号码
'content': '您的验证码是:' + code + '。请不要把验证码泄露给其他人。', # 短信内容
'format': 'json',
}
requests.get(url, params=values)

在celery_tasks/sms/目录下创建tasks.py文件,用于保存发送短信的异步任务,该文件必须是tasks.py,不能是别的名字

import logging
from celery_tasks.main import app
from celery_tasks.sms.send_messages import send_message
logger = logging.getLogger("django")
@app.task(name='send_sms_code')
def send_sms_code(sms_code, mobile):
"""
发送短信验证码
:param mobile: 手机号
:param sms_code: 验证码
:return: None
"""
try:
send_message(sms_code, mobile)
except Exception as e:
logger.error("发送验证码短信[异常][ mobile: %s, message: %s ]" % (mobile, e))

调用异步任务,使用celery异步任务发送短信

from celery_tasks.sms.tasks import send_sms_code
# 利用互亿无线发短信
send_sms_code.delay("457624", 10086)

(3) 启动celery

首先进入到celery_tasks所在的同级目录

celery -A celery_tasks.main worker -l info --pool=solo

情景:用户发起request,并等待response返回。在本些views中,可能需要执行一段耗时的程序,那么用户就会等待很长时间,造成不好的用户体验,比如发送邮件、手机验证码等。使用celery后,
一、Celery异步任务框架Celery是一个异步任务框架,并且是一个简单、灵活可靠的,处理大量消息的分布式系统Celery服务为其他项目服务提供异步解决任务的需求,内置socketCelery可执
Celery简介Celery任务队列Celery是一个简单、灵活且可靠的,能够处理大量消息的分布式系统。它专注于实时处理异步任务队列,同时也支持任务调度。Celery的架构组成Celery的架构由
celery介绍Celery是由Python开发、简单、灵活、可靠的分布式任务队列,是一个处理异步任务的框架,其本质是生产者消费者模型,生产者发送任务到消息队列,消费者负责处理任务Celery侧重
业务端后台:通过pythonmanage运行运行用例时,用pythonmanage运行时会卡,影响效率celerytask本身自己也是个服务,异步处理case异步:小明去给我买个东西,我去写代码,小明
背景在开发中,我们常常会遇到一些耗时任务,举个例子:上传并解析一个1w条数据的Excel文件,最后持久化至数据库。在我的程序中,这个任务耗时大约6s,对于用户来说,6s的等待已经是个灾难了。比较好的处
Celery是一个异步任务队列(也叫做分布式任务队列),一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需要的工具。celery的优点1:简单,容易使用,不需要配置
celery异步任务:环境准备安装celery,djangocelery就是一个专注于实时处理和任务调度的分布式队列。可以异步执行的任务交给后台处理,以防网络阻塞,减小响应时间celery使用:在工程
[Celery分布式的异步任务框架]Celery介绍Celery:分布式的异步任务框架Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统,专注于实时处理的异步任务队列,同时也支持任务调度可
Celery40支持django18及以上的版本,低于18的项目使用Celery31。一个django项目的组织如下:proj/managepyproj/__init__pysettingspyurl