V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
V2EX  ›  aisk  ›  全部回复第 6 页 / 共 61 页
回复总数  1218
1 ... 2  3  4  5  6  7  8  9  10  11 ... 61  
❮ ❯
@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 年 8 月 9 日
回复了 lxsunbin 创建的主题 › 程序员 › 求推荐一款笔记本, 5000 左右预算
换 CPU,还能再续两年。
@MagicMashRoom 收到👌
2017 年 8 月 1 日
回复了 voocel 创建的主题 › 程序员 › stackoverflow 被禁止回答问题了!
> See the Help Center to learn more.
i # aisk.me 楼主给个简历?
2017 年 7 月 28 日
回复了 HxSeek 创建的主题 › 程序员 › 简单的网络编程问题
ctrl z 只是把进程挂到后台,进程其实还在,使用 fg 命令还能恢复。
2017 年 7 月 25 日
回复了 madao 创建的主题 › 全球工单系统 › 又拍云又挂了?
2017 年 7 月 23 日
回复了 unbug 创建的主题 › 程序员 › WebAssembly Rocks 给 GitHub starts 高于 256 的用户开发注册
注册你个自己搭的论坛网站还要搞的跟抢小米似的
2017 年 6 月 24 日
回复了 nomoon 创建的主题 › Linux › ryzen 可以装哪些发行版?
Arch 用了一个月了,很爽。唯一缺陷就是现在没有办法检测 CPU 温度。
1 ... 2  3  4  5  6  7  8  9  10  11 ... 61  
❮ ❯
About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1002 Online   Highest 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 55ms · UTC 22:36 · PVG 06:36 · LAX 15:36 · JFK 18:36
♥ Do have faith in what you're doing.