V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  aisk  ›  全部回复第 4 页 / 共 60 页
回复总数  1184
1  2  3  4  5  6  7  8  9  10 ... 60  
楼主只考虑杭州吗?长三角其他地区/北京是否考虑?
@gouchaoer 你信不信关我屁事?
@gouchaoer 搜索 http keep-alive,有真相
2017-08-16 15:44:47 +08:00
回复了 janxin 创建的主题 Python pypy 日常:我们要干掉 GIL
@terrawu grumypy 那个项目提交很少了,基本是个 youtube 员工个人项目了。
@woostundy 我怀疑是不是你没有开 keep alive 导致的? requests 并不会默认帮你开启 keep alive,需要先创建一个 Session 对象,后续都用这个 Session 对象发送请求,才会 keep alive
@gouchaoer 就是这么神通广大,服不服?
@gouchaoer 我上面说了,直接用 C 来调用 socket 的都不能 patch。不过 redis 那个库网络部分就是 Python 实现的,Mysql 的话现在的方案都是用 pymysql 这个库,和 C 的那个接口一致,所以都没有问题。
@woostundy 单独打 monkey patch 再用 gunicorn 启动是无效的,因为 gunicorn 要自己先启动,这个时候 socket 和 thread 模块都已经加载进来了。然后执行你的代码时,才会进行 monkey patch,这个时候已经来不及了。解决了问题就好。
@terrawu 你是想解决楼主的问题,还是想从我的回复里挑个刺儿,怼我一下?
受不了了,直接贴代码:

https://gist.github.com/aisk/b1d8c07b96a8fecb319c7902773f9c0a

安装 gevent, flask, requests,然后用 gunicorn fuck:app 来启动项目。

访问 http://127.0.0.1:8000/suck 这个地址,会用 requests 去访问一个外部的会卡十秒的接口,这个时候再访问 http://127.0.0.1:8000/fuck,这个地址会因为当前进程被 requests 卡住,所以不能响应,要等 /suck 响应了之后才能响应。

然后启动命令改成 gunicorn a:app -k gevent,这个时候 gunicorn 会自动帮你打 monkey patch,因此你的代码一行也不用改。

然后访问 /suck,再访问 /fuck,你看现在能不能正确响应?

说 gevent 和 reuqests 不能配合的,都是老黄历了,不要出来误人子弟了,说打 monkey patch 的时候要加 httplib=True 也是老黄历了。直接推荐别人换 tornado 或者 asncio,甚至推荐上 celery 的,本来加一个参数就解决的问题,是要让别人重写项目?
@gouchaoer suck my dick
@gouchaoer 网络 IO 是可以的,文件 IO 不行,因为 gevent 直接 pactch 的自带的 socket 等模块。不过有些直接用 C 来实现的模块,内部没有使用 Python 的 socket 模块,就不会被 patch 到了,比如最常见的那个 mysql 库。
@gouchaoer 看了 gevent 你就懂了,flask 照样玩异步
有效,你怎么测试的?如果你只看单个请求,看上去 requests 去请求远程接口的时候是阻塞的,不过如果这个时候还有其他请求过来,gunicorn 还能继续提供服务的。
直接上 gevent,代码都不用改,启动 gunicorn 的时候增加一个参数 -k gevent,自动帮你打 monkey patch 好 monkey patch 了。
@chinvo,看 @skydiver 的回复。不过我说的确实有错,MIT 的话,不管是分发源码还是二进制,是需要申明原作者的。不过通过网络服务的话,是不需要的。

当然楼主的项目可能是个前端项目,这个时候是需要对方申明来源的,在引用的前端文件里,保留原作者的 license 和名字。
对方没有拿你的代码分发给其他用户,没理由给你申明来源的。
2017-08-09 11:45:59 +08:00
回复了 lxsunbin 创建的主题 程序员 求推荐一款笔记本, 5000 左右预算
换 CPU,还能再续两年。
2017-08-01 18:35:10 +08:00
回复了 MagicMashRoom 创建的主题 Android 实打实的项目 1k+star github 项目 为啥我没有面试机会
@MagicMashRoom 收到👌
1  2  3  4  5  6  7  8  9  10 ... 60  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2264 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 22ms · UTC 15:27 · PVG 23:27 · LAX 08:27 · JFK 11:27
Developed with CodeLauncher
♥ Do have faith in what you're doing.