我使用web2py开发网关服务器。
像这样:用户< --->网关服务器(web2py)< --->数据服务器
当用户请求网关服务器时,网关服务器将向数据服务器请求。
此数据服务器需要使用相同的会话来请求数据。
我在网关服务器中的代码:
def test1():
session = requests.Session()
resp = session.post(DATA_SERVER_URL1, data=payload1)
def test2():
session = requests.Session()
resp = session.post(DATA_SERVER_URL2, data=payload2)
我需要保持test1()的会话。
当用户请求test2()时,它需要使用相同的会话来请求数据服务器。
可以吗?谢谢!
答案 0 :(得分:0)
在您的代码中,您正在每个web2py请求上创建一个新的requests.Session
对象,因此从一个web2py请求到另一个请求没有持久性。我相信Session
库的requests
对象可以被腌制,所以你应该能够将它存储在web2py session
中(注意,你不应该命名一个对象"会话"在您的web2py代码中,因为全局命名空间中已有一个"会话"对象。)
def test1():
session.rs = session.rs or requests.Session()
resp = session.rs.post(DATA_SERVER_URL1, data=payload1)
def test2():
session.rs = session.rs or requests.Session()
resp = session.rs.post(DATA_SERVER_URL2, data=payload2)
在上面的代码中,请注意session
是web2py session
对象,而不是Session
库创建的requests
对象。在每个请求中,上面检查是否在web2py会话中存储了requests.Session
对象 - 如果是,它使用该对象,否则,它会创建一个新对象(将在后续的web2py请求中使用同一个用户)。