为什么我的请求会话到期?

时间:2016-11-24 15:19:24

标签: python session cookies python-requests persistence

我在Python 2.7和Django 1.10中使用请求2.12.1库来使用Web服务。当我使用会话保存cookie并使用持久性,并传递10秒〜而不使用任何Web服务时,我的视图重新生成对象requests.Session()...

这使得网络服务无法为我服务,因为我的观点已更改了Cookie。

这是我的Views.py:

client_session = requests.Session()

@watch_login
def loginUI(request):
        response        =   client_session.post(URL_API+'login/', data={'username': username, 'password': password,})
        json_login      =   response.json()

@login_required(login_url="/login/")
def home(request):
  response_statistics = client_session.get(URL_API+'statistics/')
  log('ClientSession: '+str(client_session))

  try:
      json_statistics     =   response_statistics.json()
  except ValueError:
      log('ExcepcionClientSession: '+str(client_session))

      return logoutUI(request)

  return render(request, "UI/home.html", {
      'phone_calls'           :   json_statistics['phone_calls'],
      'mobile_calls'          :   json_statistics['mobile_calls'],
      'other_calls'           :   json_statistics['other_calls'],
      'top_called_phones'     :   json_statistics['top_called_phones'],
      'call_ranges_week'      :   json_statistics['call_ranges_week'],
      'call_ranges_weekend'   :   json_statistics['call_ranges_weekend'],
      'access_data'           :   accessData(request.user.username),
  })

  def userFeaturesFormInit(clientRequest):
    log('FeaturesClientSession: '+str(client_session))
    response = client_session.get(URL_API+'features/')

    try:
        json_features   =   response.json()
    except ValueError as e:
        log('ExcepcionFeaturesClientSession: '+str(client_session))
        raise e

谢谢。

1 个答案:

答案 0 :(得分:0)

我修改了它,手动指定cookie,并将其保存在请求中。

client_session = requests.Session()
response = client_session.post(URL_API+'login/', {'username': username, 'password': password,})
request.session['cookiecsrf']      =   client_session.cookies['csrftoken']
request.session['cookiesession']   =   client_session.cookies['sessionid']

并将其发送到获取/发布中:

cookies = {'csrftoken' : request.session['cookiecsrf'], 'sessionid': request.session['cookiesession']}
response = requests.get(URL, cookies=cookies)