服务是 Flask 写的,外面套了层 Tornado ,该怎么让 requests 变成非阻塞?
![]() | 1 DozySun 2016-12-05 10:36:19 +08:00 ![]() 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 ![]() 你外边套的是 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 ![]() |
![]() | 12 Livid MOD PRO ![]() 耗时可能会超过半秒的函数一律放进 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 包装一下吧 |