我查看了 this answer,它显示了在对同一主机的多个网络调用之间共享 Session
反对意见的性能改进。但是,这是否适用于跨多个客户端请求将 Session 作为 flask 单例共享?
例如,假设我有一个名为 /wiki/stats/<name>
的端点,它将使用给定的 <name>
参数返回维基百科文章的一些统计信息。在 flask 中,这可能是这样的:
@app.route('/wiki/stats/<name>')
get_wiki_stats_route(name):
with requests.Session() as s:
response = session.get(f"https://www.wikipedia.org/wiki/{name}")
# Process response and return stats
但是,在上述情况下,每次收到对 /wiki/stats/<name>
的新请求时,都会使用新的连接池创建一个新的会话对象。
有没有办法共享会话,将其作为单一依赖项传递给路由,例如:
@app.route('/wiki/stats/<name>')
get_wiki_stats_route(name,session):
with session as s:
response = session.get(f"https://www.wikipedia.org/wiki/{name}")
# Process response and return stats
这个 session
对象能否在多个客户端请求之间共享?假设这些请求来自同一台服务器。在具有多个无状态 flask 实例的云配置中,是否至少可以为每个服务器实例共享会话?