卡飞资源网

专业编程技术资源共享平台

基于Flask开发的前后端分离租房项目(六)

十一、Celery的使用详解

11.1celery介绍:

celery是一个功能完备即插即用的任务队列。它使得我们不需要考虑复杂的问题,使用非常简单。

celery适用异步处理问题,当发送邮件、或者文件上传, 图像处理等等一些比较耗时的操作,我们可将其异步执行,

这样用户不需要等待很久,提高用户体验。

celery的特点是:

* 简单,易于使用和维护,有丰富的文档。

* 高效,单个celery进程每分钟可以处理数百万个任务。

* 灵活,celery中几乎每个部分都可以自定义扩展。



11.2celery的结构如下图所示:


11.3在项目中使用celery:

11.3.1需要注意的是celery可以在任意一个独立的目录建立worker,所以celery可以实现三端甚至四端开发:

客户端(client),任务队列端(broker),任务处理端(worker),存放结果端(backend)


11.3.2首先在项目目录下新建一个tasks包来存放celery任务代码,如下所示:


11.3.3config.py是celery的配置项,在我们的项目中主要配置broker和backend的地址(使用redis)

BROKER_URL = "redis://127.0.0.1:6379/1"

CELERY_RESULT_BACKEND = 'redis://127.0.0.1:6379/2'


11.3.3main.py的作用是创建celery对象:

from celery import Celery

from ihome.tasks import config


# 定义celery对象

celery_app = Celery("ihome")


# 引入配置信息

celery_app.config_from_object(config)


# 自动搜寻异步任务

celery_app.autodiscover_tasks(["ihome.tasks.sms"])


11.3.4 sms包是具体的任务代码,包名一般以任务命名,在我们的项目中的任务主要是发送短信验证码:

from ihome.tasks.main import celery_app

from ihome.libs.yuntongxun.sms import CCP

@celery_app.task

def send_sms(to, datas, temp_id):

"""发送短信的异步任务"""

ccp = CCP()

try:

result = ccp.send_template_sms(to, datas, temp_id)

except Exception as e:

result = -2

return result


11.3.5如何在项目中去使用celery呢?

from ihome.tasks.sms.tasks import send_sms


result_obj = send_sms.delay(mobile, [sms_code, int(constants.SMS_CODE_REDIS_EXPIRES/60)], 1)


11.3.6如何启动celery呢?

如果是在一台电脑上启动celery,则需要开两个命令行,一个正常启动项目:python manage.py runserver

另一个要进入celery的tasks包所在目录,输入命令:celery -A ihome.tasks.main worker -l info

十二、房屋管理

12.1首先在houses.py中编写获取用户发布的房源信息的后端:


12.2接着编写主页幻灯片展示的房源信息,使用缓存提高效率:


12.3接着编写获取房源详情的后端:


12.4接着完善上述功能的前端逻辑:

12.4.1首先获取房东发布的房源信息条目页面是myhouse.html:

这里使用art-template模板:


12.4.2然后在myhouse.js中完善js逻辑:


12.4.3然后是首页轮播图片的前端逻辑,在index.html和index.js中完成:

首先需要在index.html中导入轮播组件:

然后编写js模板:


然后在index.js中完成js逻辑:


12.4.4然后在detail.html和detail.js中编写房屋详情页面的前端逻辑:

首先在detail.html中定义前端模板显示数据,逻辑跟上面的一样,

由于要显示的数据太多,这里不再赘述

在detail.js中完成js逻辑:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言