标签: python-requests

为什么在将数据上传到我的数据库时经常看到"重置掉连接"?

我将数以亿计的项目通过REST API从Heroku上的云服务器上传到我的数据库到AWS EC2中的数据库.我正在使用Python,我不断在日志中看到以下INFO日志消息.

[requests.packages.urllib3.connectionpool] [INFO] Resetting dropped connection: <hostname>
Run Code Online (Sandbox Code Playgroud)

在我的代码继续执行之前,这种"重置丢弃的连接"似乎需要很多秒(有时30秒以上).

  • 首先,这里究竟发生了什么,为什么?
  • 其次有没有办法阻止连接丢失,以便我能够更快地上传数据?

谢谢你的帮助.安德鲁.

python connection-pooling http urllib3 python-requests

33
推荐指数
3
解决办法
3万
查看次数

如何在Python请求中使用cookie

我正在尝试登录页面并访问页面中的其他链接.

payload={'username'=<username>,'password'=<password>}
with session() as s:
    r = c.post(<URL>, data=payload)
    print r
    print r.content
Run Code Online (Sandbox Code Playgroud)

这给了我一个"405 Not Allowed"错误.我使用chrome开发人员工具查看了post方法的详细信息,可以看到api(URL/api/auth).我使用有效负载发布到该URL,它正在工作,我收到类似于我在开发人员中看到的响应.

不幸的是,在登录后尝试"获取"另一个URL时,我仍然从登录页面获取内容.为什么登录不坚持?我应该使用cookies吗?我是新手,所以我真的不知道如何使用cookies.

python cookies python-requests

33
推荐指数
4
解决办法
8万
查看次数

当使用来自终端的SOCKS5时,Python的请求"缺少对SOCKS支持的依赖性"

我正在尝试使用依赖于Python请求的包与我的Python 2.7 shell中的API进行交互.事情是我的网络(大学图书馆)阻止了远程地址.

所以说到API,我会做以下事情:

~$ ssh -D 8080 name@myserver.com
Run Code Online (Sandbox Code Playgroud)

然后,在新的终端,在本地计算机:

~$ export http_proxy=socks5://127.0.0.1:8080 https_proxy=socks5://127.0.0.1:8080
Run Code Online (Sandbox Code Playgroud)

然后我在Python控制台中运行该程序但失败了:

~$ python
>>> import myscript
>>> id = '1213'
>>> token = 'jd87jd9'
>>> connect(id,token)

File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/sessions.py", line 518, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/sessions.py", line 475, in request
    resp = self.send(prep, **send_kwargs)
  File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/sessions.py", line 585, in send
    r = adapter.send(request, **kwargs)
  File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/adapters.py", line 370, in send
    conn = self.get_connection(request.url, proxies)
  File "/home/username/.virtualenvs/venv/local/lib/python2.7/site-packages/requests/adapters.py", line 273, in get_connection
    proxy_manager = …
Run Code Online (Sandbox Code Playgroud)

socks urllib3 python-2.7 python-requests

33
推荐指数
8
解决办法
6万
查看次数

可以在Google App Engine上使用Python Requests库吗?

我可以在Google App Engine上使用请求吗?我认为这个库非常适合创建REST客户端.

python google-app-engine python-requests

32
推荐指数
4
解决办法
1万
查看次数

使用python请求登录Facebook

我正试图找到一种方法来自动登录到Facebook而无需浏览器使用Python.我尝试了"请求"lib.试过几种方法:

URL = 'http://m.facebook.com'
requests.get(URL, auth = ('email@domain.com', 'mypassword'))
Run Code Online (Sandbox Code Playgroud)

...

form_data = {'email': 'email@domain.com',
             'pass' : 'mypassword'
            }
requests.post(URL, data = form_data)
Run Code Online (Sandbox Code Playgroud)

...

requests.post(URL + '?email=email@domain.com&pass=mypassword')
Run Code Online (Sandbox Code Playgroud)

最后一种方法填写页面上的"电子邮件"框,但"通过"框仍为空...

有人可以帮我这个吗?是否可以使用请求模拟FB登录?

谢谢!

python facebook facebook-login python-requests

32
推荐指数
4
解决办法
6万
查看次数

使用带有javascript页面的python请求

我正在尝试使用python的请求框架(http://docs.python-requests.org/en/latest/),但我试图访问的页面使用javascript来获取我想要的信息.

我试图在网上搜索一个解决方案,但事实上我正在搜索关键字javascript,我得到的大部分内容是如何使用javascript语言.

无论如何使用请求框架与使用javascript的页面?

python web-scraping python-requests

32
推荐指数
3
解决办法
5万
查看次数

如何指定python请求http put body?

我正在尝试使用requests模块重写一些旧的python代码.目的是上传附件.邮件服务器需要以下规范:

https://api.elasticemail.com/attachments/upload?username=yourusername&api_key=yourapikey&file=yourfilename
Run Code Online (Sandbox Code Playgroud)

有效的旧代码:

h = httplib2.Http()        
        resp, content = h.request('https://api.elasticemail.com/attachments/upload?username=omer&api_key=b01ad0ce&file=tmp.txt', 
        "PUT", body=file(filepath).read(), 
        headers={'content-type':'text/plain'} )
Run Code Online (Sandbox Code Playgroud)

没有找到如何在请求中使用正文部分.

我设法做了以下事情:

 response = requests.put('https://api.elasticemail.com/attachments/upload',
                    data={"file":filepath},                         
                     auth=('omer', 'b01ad0ce')                  
                     )
Run Code Online (Sandbox Code Playgroud)

但不知道如何使用文件内容指定正文部分.

谢谢你的帮助.奥马尔.

python http put httplib2 python-requests

29
推荐指数
2
解决办法
7万
查看次数

如何在Sublime Text 2插件中包含第三方Python包

我正在编写一个使用模块SEAPI.py的sublime text 2插件,该模块本身导入了请求模块.

由于sublime text 2使用它自己的嵌入式python解释器,它没有看到我的ubuntu机器中安装的请求模块(我收到以下错误:ImportError:没有名为requests的模块).

到目前为止我能找到的最佳解决方案是将"请求"模块(文件的整个目录)从/usr/lib/python2.7/dist-packages/requests复制到我的插件目录中的sublime文本包目录中.但在那之后,它说它找不到'urllib3'模块.

有没有更好的方法导入请求模块,以便我不必将所有文件复制到我的插件目录?

我正在使用的当前代码如下:

MyPlugin.py

import sublime
import sublime_plugin
import SEAPI
...
Run Code Online (Sandbox Code Playgroud)

SEAPI.py

import requests
try:
    import simplejson as json
except:
    import json
from time import time, sleep
...
Run Code Online (Sandbox Code Playgroud)

编辑: 所选答案是正确的并修复了我的主要问题,但使用当前版本的"请求"与嵌入式sublime text 2解释器存在不同的问题.ST2的python缺少常规2.7 python中存在的各种模块(例如'fileio').

我已经使用"请求"模块解决了这个问题:https: //github.com/bgreenlee/sublime-github

我必须编辑'urllib3/response.py'文件到这个:

try:
    from cStringIO import StringIO as BytesIO
except ImportError:
    pass  # _fileio doesn't seem to exist in ST's python in Linux, but we don't need it
Run Code Online (Sandbox Code Playgroud)

python plugins distutils python-requests sublimetext2

29
推荐指数
2
解决办法
2万
查看次数

Python:requests.exceptions.ConnectionError.使用url超出最大重试次数

这是脚本:

import requests
import json
import urlparse
from requests.adapters import HTTPAdapter

s = requests.Session()
s.mount('http://', HTTPAdapter(max_retries=1))

with open('proxies.txt') as proxies:
    for line in proxies:
        proxy=json.loads(line)

    with open('urls.txt') as urls:
        for line in urls:

            url=line.rstrip()
            data=requests.get(url, proxies=proxy)
            data1=data.content
            print data1
            print {'http': line}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,它试图通过代理列表访问URL列表.这是urls.txt文件:

http://api.exip.org/?call=ip
Run Code Online (Sandbox Code Playgroud)

这是proxies.txt文件:

{"http":"http://107.17.92.18:8080"}
Run Code Online (Sandbox Code Playgroud)

我在www.hidemyass.com上获得了此代理.它可能是一个糟糕的代理吗?我尝试了几个,这就是结果.注意:如果您尝试复制此内容,则可能必须将代理更新为hidemyass.com上的最新代理.他们似乎最终停止工作.这是完整的错误和追溯:

Traceback (most recent call last):
  File "test.py", line 17, in <module>
    data=requests.get(url, proxies=proxy)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 55, in get
    return request('get', url, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/requests/api.py", line 44, in request
    return session.request(method=method, url=url, **kwargs) …
Run Code Online (Sandbox Code Playgroud)

python python-requests

29
推荐指数
2
解决办法
8万
查看次数

如何防止python请求百分比编码我的URL?

我正在尝试使用python中的requests.get()获取以下格式的URL:

http://api.example.com/export/?format=json&key=site:dummy+type:example+group:wheel

#!/usr/local/bin/python

import requests

print(requests.__versiom__)
url = 'http://api.example.com/export/'
payload = {'format': 'json', 'key': 'site:dummy+type:example+group:wheel'}
r = requests.get(url, params=payload)
print(r.url)
Run Code Online (Sandbox Code Playgroud)

但是,URL的编码百分比,我没有得到预期的响应.

2.2.1
http://api.example.com/export/?key=site%3Adummy%2Btype%3Aexample%2Bgroup%3Awheel&format=json
Run Code Online (Sandbox Code Playgroud)

如果我直接传递URL,这是有效的:

url = http://api.example.com/export/?format=json&key=site:dummy+type:example+group:wheel
r = requests.get(url)
Run Code Online (Sandbox Code Playgroud)

有没有办法以原始形式传递参数 - 没有百分比编码?

谢谢!

python url percent-encoding python-requests

28
推荐指数
5
解决办法
3万
查看次数