栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python语法进阶篇 - 85 - 综合实战 - 抽奖系统之优化补充

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python语法进阶篇 - 85 - 综合实战 - 抽奖系统之优化补充

万叶集
 隐约雷鸣,阴霾天空。 
 但盼风雨来,能留你在此。 

前言:
✌ 作者简介:渴望力量的哈士奇,大家可以叫我 哈士奇 。(我真的有一只哈士奇)
CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主
 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步
 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。
 如果感觉博主的文章还不错的话,还请关注、点赞、收藏三连支持一下博主哦


系列专栏:
               ⛽️ Python全栈系列 - [更新中]     【 本文在该系列】
                        Python零基础入门篇
                        Python语法进阶篇
                网安之路系列
​                        网安之路踩坑篇
​                        网安知识扫盲篇
​                        Vulhub 漏洞复现篇
​                        Shell脚本编程篇
​                        Web攻防篇   2021年9月3日停止更新,转战先知等安全社区
​                        渗透工具使用集锦  2021年9月3日停止更新,转战先知等安全社区
​                ⭐️ 点点点工程师系列
​                        测试神器 - Charles 篇
​                        测试神器 - Fiddler 篇
​                        测试神器 - Jmeter 篇
​                        自动化 - RobotFrameWork 系列
​                        自动化 - 基于 JAVA 实现的WEB端UI自动化
                        自动化 - 基于 MonkeyRunner 实现的APP端UI自动化

文章目录
    •  针对用户与管理员的验证
    •  防止并发操作 user.json 与 gift.json 文件
    •  使用 base.py 模块的__update_gift() 函数替代抽奖函数 choice_gift() 更改奖品数量
    •  登录体系的优化
    •  每日抽奖次数的限制

该章节没有代码上的技术实现,更多的是偏向于需求实现上的分析与优化。

其实该章节并不想写出来,但是思前想后,最终还是决定单独放出来吧,虽然字数不多。

在之前的章节,我们针对 抽奖系统 进行了开发,从最开始的 项目介绍、环境搭建、项目基础类;基于 base.py 模块实现的用户相关功能实现、奖品相关功能开发; admin.py 模块的添加用户、修改用户、身份封禁及奖品的增删改查操作;user.py 模块的获取用户、奖品列表及抽奖逻辑的实现。

接下来我们将总结之前章节编写代码中存在的一些问题与可优化的方向,针对这些优化的点,可以继续去丰满该抽奖系统。

 针对用户与管理员的验证

现在 admin.py 与 user.py 模块的代码实现逻辑中,在它们实例化的时候以及调用各种业务函数的时候都进行了验证。当前的验证方法是验证它们的 role 标签的字段是否是 admin 或 normal ,但其实当前的这种验证还不完美 。

为什么这么说呢,如果当前用户的 active 状态为 False 的情况下,也是不允许访问的。所以这里还应该添加针对 active 状态的判断。因为涉及到实例化与操作每一个功能函数,所以这里推荐在使用每个功能的时候,通过 装饰器 来对其进行一个添加,从而进行判断。

 防止并发操作 user.json 与 gift.json 文件

目前的场景仅仅是我们个人练习,但是如果是多人使用,可能会出现并发操作这些文件的可能,所以需要给这两个文件添加 锁 。可以使用我们之前学习的进程锁从而防止这些问题。

可以在 base.py 模块的实例化操作的时候去定义这把 锁 ,并对于每一个操作 user.json 与 gift.json 文件的函数去 加锁与取消锁 。需要注意的是,一定要保证 锁 可以正常的被取消。 这里可以使用 try...Exception...finally ,这样的话无论发生什么 finally 都会被触发,所以将 解锁 放到 finally 就可以了。类的实例化的时候在构造函数里定义一个锁对象,通过这个锁对象在各个应用函数里调用即可。

 使用 base.py 模块的__update_gift() 函数替代抽奖函数 choice_gift() 更改奖品数量

在上一章节中,在编写抽奖函数 choice_gift() 时,顺势就开发了更新 gift.json 的业务,将当前抽中的奖品数量进行了减一。其实可以通过写好的 Base 类中的 __update_gift() 来替换 choice_gift() 函数的更改奖品数量,所及大胆的尝试替换吧。

 登录体系的优化

示例如下:

当前的实现方式是在admin.py模块中通过 add_user() 函数调用 base.py 模块中的 __write_user() 函数来实现的。(只能通过 admin 权限的用户来实现)… 然而在真实的场景中,都是由用户自己注册一个账号就可以使用了,所以可以将这一块的功能进行一个调整。其实这一块的功能调整可能会大一些,但其实也很简单。

我们只需要在 user.json 模块 定义一个 regist() 函数,在该函数中传入 username 与 password 两个参数,然后去调用 base.py 模块中的 __write_user() 函数即可(默认 role = normal, active=True)。

如果再增加一点难度的话,可以考虑将 password 进行加密。

 每日抽奖次数的限制

在这里我们想想真实场景是如何的,在一个真实抽奖的场景下,实际上是不会让用户进行无限制的抽奖的,都会进行次数的限制,超过次数就不能再进行抽奖的操作了。

这里优化的话,可以考虑在 user.json 添加一个 count 字段的信息用于统计、计算抽奖的次数。

关于如何判断是否是当前的抽奖次数使用完,可以通过 utils.py 模块的 timestamp_to_string 函数的时间 YYYY-MM-DD 的格式 判断user.json 文件的 update_time 字段的 YYYY-MM-DD 格式校验是否是当天的次数使用完。

判断日期这里还需要做一个校验,如果不是当天需要将抽奖次数进行清零,然后赋值抽奖的次数,随着抽奖次数的递减而减少。

PS:越看越像是在搞需求了…

这里我就不再写代码了,相信如果大家自己动手去完善的话,在提升自己的编程思维能力的同时也会大大的提升自己编程能力的。加油!冲鸭!>

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/853050.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号