新项目里 ui 要和后端频繁交互,确保线程上无阻塞各方面都会很方便。
网络服务方案就两种,要不然就 flask,要不然就 aiohttp, 以前用 asyncio 从传输层开始折腾过 rpc 框架,协程确实开发起来感觉考虑的问题很多。 我这个项目又没那么高性能需求,所以就选了开发快的 flask。
今天调研遇到一个问题,windows 平台没有 gunicorn,而 flask 自带的 server 设置到 threaded 模式后发现只实现了 router 之间无阻塞。
代码:
from flask import Flask
import time
app = Flask(__name__)
@app.route('/1')
def index():
return 'route 1 no block'
@app.route('/2')
def index2():
time.sleep(10)
return 'route 2 block 10s'
if __name__ == '__main__':
app.run(debug=True,threaded=True)
开启 threaded 后,行为表现是: 访问 /2,同时打开 /1,无阻塞。 访问 /2,同时再开一个 /2,第二个页面代码,会阻塞到第一个页面返回后才开始执行。
这个不符合我的需求,我希望每一次新的 request 都新开辟线程。 有什么办法实现吗?还是我哪里设置错了 谢谢大家
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.