django 的 view 中如何阻塞请求

2018-09-13 10:15:45 +08:00
 zqyisasd
具体如图中,一个是验证码,一个验证码颜色,https://gitee.com/zhuqiyu/django_monitor/blob/master/index_img/index.png
目前是让验证码颜色函数阻塞 0.01 秒,但是有时候验证码函数超过 0.01 秒就会导致第二张图片加载不出来
代码地址 https://gitee.com/zhuqiyu/django_monitor/blob/master/monitor/ad/views.py (auth 是验证码函数,auth2 是验证码颜色函数)
代码
auth_code_color = None
def auth(request):
""" 验证码函数 ,authCode 类来自 Authcode.py
@:return
auth_code_img, 二进制图片
"""
auth_code = authCode()
auth_code_img = auth_code.gene_code()
auth_code_text = auth_code.text
global auth_code_color
auth_code_color = auth_code.create_color()
request.session["verify_code"] = auth_code_text
return HttpResponse(auth_code_img, 'image/png')
def auth2(request):
time.sleep(0.01)
global auth_code_color
return HttpResponse(auth_code_color, 'image/png')
1706 次点击
所在节点    Python
6 条回复
zqyisasd
2018-09-13 10:50:14 +08:00
请问能用什么方式将 time.sleep(0.01)替换了吗,或者思路也行。之前在 auth 函数中添加一个变量,值为 1,在 auth2 中-1,可能实现的有问题,结果比现在还差。
zqyisasd
2018-09-13 10:56:31 +08:00
目前最容易出现的是在服务重启之后的前两次访问,后面就一般不会复现。
sujin190
2018-09-13 11:21:56 +08:00
为什么不在第一个请求结束后再发起第二个请求啊
zqyisasd
2018-09-13 11:25:24 +08:00
因为我不会前端。。
zqyisasd
2018-09-13 11:25:30 +08:00
<div style="display: inline-block;"><img name="img_code" src="/ad/auth/?0.42844671870369355" onclick="this.src='/ad/auth/?'+Math.random();document.getElementById('verify_code_color').src='/ad/auth2/?'+Math.random()"/></div>
<div style="position: absolute;left: 90px;top: 10px;">输入 <img id="verify_code_color" src="/ad/auth2/?0.42844671870369355"/> 验证码</div>
xpresslink
2018-09-13 11:38:13 +08:00
别瞎折腾了百度一下 django-captcha
你自己写的那个 login 也是乱七八糟的,还不直接 django 自己带的 auth 模块呢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488824

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX