如何在web2py上保留请求会话?

时间:2014-10-30 03:07:00

标签: session web2py

我使用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()时,它需要使用相同的会话来请求数据服务器。

可以吗?谢谢!

1 个答案:

答案 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请求中使用同一个用户)。