欢迎来到银盒子的世界~
解决大文件上传带来的响应时间过长的问题
做商城项目的管理后台的话,绕不开的一个话题是,运营会给用户发大量的优惠券。(并没有故意怼运营,只会用发优惠券的方式进行用户拉新或者用户留存的意思)
首先第一个需要考虑的点是发券用户名单,这里,运营势必会提出,给全部用户发券和给部分指定用户发券的功能(要是运营没提,就说明这运营不太行......)
商城类的项目,用户不会少,假定给其中的五十万用户发放指定的一堆优惠券,需要解决的问题如下:
用户名单的导入。运营希望导入一个表格,里边是数据部门提供过来的五十万用户名单,设置好一个时间,到时间就发放优惠券。
首先初版想法是用xlrd这个库,他可以把http请求里的表格文件解析出来,逐行拿到数据。然后自己写逻辑,先进行活动判断,再进行数据判断,再进行用户判断,然后这个确定的用户,就往数据库里写入,写的话估计还需要判断优惠券的使用时间之类的信息。因为用的是django的框架,这个导入的过程就比较慢。自己试了一下,假如服务器配置再烂一点,好几分钟都处理不完。
想象一下实际使用场景,运营是在商城的管理后台上,点个按钮,然后选个文件,再点个确定,结果几分钟过去了,都没个反馈,具体成功没,失败没,就干等着,那肯定是不行的。况且一般nginx还有响应超时的问题。
那么明显,单进程的处理就不可以了,第二版想到用协程,也就是asyncio。
假如开发能怼过产品和运营,提出可以让用户自己手动领取优惠券,从而避开系统自动发放优惠券这个功能,那就算你厉害,是吾辈楷模......