请老师和同学们回答一下第一次审批新闻会卡顿的疑问

请老师和同学们回答一下第一次审批新闻会卡顿的疑问

老师说第一次审批新闻,讲新闻缓存到redis,耗时的原因是构建连接池。对此我有疑惑如下:
我觉得app.py运行的时候,redis的pool就应该构建好的呀,当第一次审批新闻之后,直接在pool取连接就行了,可为什么会耗较长时间?

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

2回答
提问者 Boboy123 2019-08-30 20:40:14

你好,我觉得不对,因为在app.py执行的时候,执行import new_service的时候会执行new_service.py中的代码,然后new_service.py中又import redis_news_dao会执行redis_news_dao.py中的代码,那么redis_news_dao.py中创建了pool这个变量,已经连上了redis,所以在app.py中import news_service这句执行完成,pool已经构建了

  • 同学你好: 同学的想法是正确的,代码的从上向下执行,是构建了pool的连接池,但是没有进行创建redis数据库的连接对象,只有在审批新闻时,才会使用redis连接池来创建一个redis数据库的连接对象供我们使用,当连接对象创建后,当前用户再次进行审批由于连接对象已存在,所以不会再创建连接对象,直接使用当前的连接对象去审批新闻。如果我解决了同学的问题,请采纳!学习愉快^_^。
    2019-09-02 10:27:48
  • 不对啊,方法中的try...except...finally...语句中的“del con”会删除连接对象的, 每次调用,有会生成新的连接对象con。 关于连接池对象pool和连接对象con,一直的糊里糊涂的,搞不明白。。搞不明白!!!
    2019-09-03 23:21:36
  • 同学你好:每一个用户连接redis数据库的对象只有一个,不管这个用户做了多少次的审批新闻的任务,都是使用当前的连接对象去使用的。只有当这个用户退出登录时(意味着这个用户的任务结束时)*,这个用户的redis的连接对象才会销毁。学习愉快^_^。
    2019-09-04 09:26:52
好帮手乔木 2019-08-30 13:04:24

同学你好:

首先同学要理解程序的执行顺序。只有当条件判断符合审批新闻的时候。才会执行审批新闻下的代码块,这时才会去调用创建redis数据连接池pool。所以会进行一次卡顿。当第二次审批时,pool已经创建好了,所以不会出现这种情况。

也就是说执行app文件不会将所有的功能全部执行,是根据同学输入的条件去进行判断执行的。

如果我解决了同学的问题,请采纳!学习愉快^_^。

  • 提问者 Boboy123 #1
    你好,我觉得不对,因为在app.py执行的时候,执行import new_service的时候会执行new_service.py中的代码,然后new_service.py中又import redis_news_dao会执行redis_news_dao.py中的代码,那么redis_news_dao.py中创建了pool这个变量,已经连上了redis,所以在app.py中import news_service这句执行完成,pool已经构建了
    2019-08-30 20:40:43
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师