Python 金字塔返回新会话
我使用檐口创建RESTful URL 我安装了金字塔烧杯,并按照文档中的规定,将include添加到我的Python 金字塔返回新会话,python,session,pyramid,cornice,Python,Session,Pyramid,Cornice,我使用檐口创建RESTful URL 我安装了金字塔烧杯,并按照文档中的规定,将include添加到我的\uuuu init\uuuuuuuuuu.py 就这样。然后我在我的观点中这样做: p_desc = """Service to post session. """ p = Service(name='p',\ path=root+'/1',\ description=register_desc) g_desc
\uuuu init\uuuuuuuuuu.py
就这样。然后我在我的观点中这样做:
p_desc = """Service to post session. """
p = Service(name='p',\
path=root+'/1',\
description=register_desc)
g_desc = """Service to get session. """
g = Service(name='g',\
path=root+'/2',\
description=g_desc)
@g.get()
def view2(request):
print request.session
return Response()
@p.post()
def view1(request):
print 'here'
request.session['lol'] = 'what'
request.session.save()
print request.session
return Response()
这就是我的结果
>>> requests.post('http://localhost/proj/1')
<Response [200]>
>>> requests.get('http://localhost/proj/2')
<Response [200]>
Starting HTTP server on http://0.0.0.0:6543
here
{'_accessed_time': 1346107789.2590189, 'lol': 'what', '_creation_time': 1346107789.2590189}
localhost - - [27/Aug/2012 18:49:49] "POST /proj/1 HTTP/1.0" 200 0
{'_accessed_time': 1346107791.0883319, '_creation_time': 1346107791.0883319}
localhost - - [27/Aug/2012 18:49:51] "GET /proj/2 HTTP/1.0" 200 4
>requests.post('http://localhost/proj/1')
>>>请求。获取('http://localhost/proj/2')
在上启动HTTP服务器http://0.0.0.0:6543
在这里
{“访问时间”:1346107789.2590189,“lol”:“什么”,“创建时间”:1346107789.2590189}
本地主机--[27/Aug/2012 18:49:49]“POST/proj/1http/1.0”200 0
{“访问时间”:1346107791.0883319,“创建时间”:1346107791.0883319}
本地主机--[27/Aug/2012 18:49:51]“GET/proj/2http/1.0”2004
如您所见,它返回新会话。如何获得相同的会话以便访问相同的数据 会话通过发送到客户端的cookie进行跟踪。因此,您的“客户机”(请求库)需要再次发送cookie:
resp = requests.post('http://localhost/proj/1')
cookies = resp.cookies
requests.get('http://localhost/proj/2', cookies=cookies)
更好的方法是使用:
举例说明:
输出
with requests.Session() as s:
s.post('http://localhost/proj/1')
s.get('http://localhost/proj/2')
import requests
def t(r, url="http://httpbin.org/cookies"):
print(r.get(url).json['cookies'])
with requests.session() as s:
t(requests) # request without session
t(s) # request within session
t(s, "http://httpbin.org/cookies/set?name=value") # set cookie
t(requests) # request without session
t(s) # request within session
{} # request without session
{} # request within session
{u'name': u'value'} # set cookie
{} # request without session
{u'name': u'value'} # request within session