服务是 Flask 写的,外面套了层 Tornado ,该怎么让 requests 变成非阻塞?
1
DozySun 2016-12-05 10:36:19 +08:00 1
tornado 换成 gunicorn+gevent
|
3
ericls 2016-12-05 10:58:44 +08:00 via iPhone
啊? 还可以这么神奇直接改?
|
4
julyclyde 2016-12-05 11:34:54 +08:00 1
你外边套的是 tornado web server 而不是 tornado web framework 吧?那就直接改 gevent monkey patch 就得了
|
6
loalj 2016-12-05 11:51:41 +08:00
requests 库换成 tornado 自带的 async httpclient 试一试?
|
7
DozySun 2016-12-05 11:52:05 +08:00
如果不重度依赖 requests 可以用 tornado 的异步 httpclient
否则就是 concurrent.futures |
8
woostundy OP |
9
timonwong 2016-12-05 12:05:24 +08:00
我不知道在 tornado 上跑 flask 有什么意义,跟用单个进程,什么 threading, gevent, eventlet 都不用跑有多大区别,有没有老司机出来指点一下?
|
10
loalj 2016-12-05 12:08:33 +08:00 1
|
12
Livid MOD 耗时可能会超过半秒的函数一律放进 rq 或者 celery 做异步处理。
|
13
woostundy OP @loalj 不过 2.7 里没法在有 yield 的方法里再写 return ,应该是 yield res 吧?
|
15
wwqgtxx 2016-12-05 13:28:10 +08:00 via iPhone
你这种需求还是用 gunicorn 或者 uwsgi 包装一下吧
|