标签: urllib3

在Google App Engine中使用Requests python库

我正在尝试在Google App Engine上使用令人敬畏的Requests库.我找到了urllib3的补丁,它请求依赖,与App Engine兼容.https://github.com/shazow/urllib3/issues/61

我能成功

import requests
Run Code Online (Sandbox Code Playgroud)

但是之后

response = requests.get('someurl')
Run Code Online (Sandbox Code Playgroud)

以下回溯失败.这是怎么回事?

Traceback (most recent call last):
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/ext/admin/__init__.py", line 317, in post
    exec(compiled_code, globals())
  File "<string>", line 6, in <module>
  File "/Users/Rohan/Dropbox/MuktiTechnologiesINC/MuktiTechnologies/GAE/humanmictweet/GAE/libraries/requests/api.py", line 52, in get
    return request('get', url, **kwargs)
  File "/Users/Rohan/Dropbox/MuktiTechnologiesINC/MuktiTechnologies/GAE/humanmictweet/GAE/libraries/requests/api.py", line 40, in request
    return s.request(method=method, url=url, **kwargs)
  File "/Users/Rohan/Dropbox/MuktiTechnologiesINC/MuktiTechnologies/GAE/humanmictweet/GAE/libraries/requests/sessions.py", line 208, in request
    r.send(prefetch=prefetch)
  File "/Users/Rohan/Dropbox/MuktiTechnologiesINC/MuktiTechnologies/GAE/humanmictweet/GAE/libraries/requests/models.py", line 458, in send
    self.auth = get_netrc_auth(url)
  File "/Users/Rohan/Dropbox/MuktiTechnologiesINC/MuktiTechnologies/GAE/humanmictweet/GAE/libraries/requests/utils.py", line 43, in get_netrc_auth
    for loc in locations:
  File "/Users/Rohan/Dropbox/MuktiTechnologiesINC/MuktiTechnologies/GAE/humanmictweet/GAE/libraries/requests/utils.py", …
Run Code Online (Sandbox Code Playgroud)

google-app-engine urllib3 python-requests

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

如何让python .post()请求重试?

我正在尝试在Python中实现请求重试.
它与.get()请求的魅力相似,但.post()无论状态代码如何,请求都不会重试.我想将它与.post()请求一起使用.

我的代码:

from requests.packages.urllib3.util import Retry
from requests.adapters import HTTPAdapter
from requests import Session, exceptions

s = Session()
s.mount('http://', HTTPAdapter(max_retries=Retry(total=2, backoff_factor=1, status_forcelist=[ 500, 502, 503, 504, 521])))
r = s.get('http://httpstat.us/500')
r2 = s.post('http://httpstat.us/500')
Run Code Online (Sandbox Code Playgroud)

因此,.get()请求会重试,而请求.post()则不会.

怎么了?

python urllib3 python-requests

19
推荐指数
1
解决办法
6075
查看次数

Python请求很慢,需要很长时间才能完成HTTP或HTTPS请求

使用 requests 库请求 Web 资源或网站或 Web 服务时,请求需要很长时间才能完成。该代码类似于以下内容:

import requests
requests.get("https://www.example.com/")
Run Code Online (Sandbox Code Playgroud)

此请求需要 2 多分钟(正好 2 分 10 秒)才能完成!为什么它这么慢,我该如何解决?

python urllib3 python-3.x python-requests

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

使用urllib3下载文件的最佳方法是什么

我想通过HTTP协议下载文件urllib3.我已设法使用以下代码执行此操作:

 url = 'http://url_to_a_file'
 connection_pool = urllib3.PoolManager()
 resp = connection_pool.request('GET',url )
 f = open(filename, 'wb')
 f.write(resp.data)
 f.close()
 resp.release_conn()
Run Code Online (Sandbox Code Playgroud)

但我想知道这样做的正确方法是什么.例如,它适用于大文件,如果没有做什么,使这个代码更容易容忍和可扩展.

注意.对我来说,重要的是不要使用urllib3urllib2,因为我希望我的代码是线程安全的.

python download urllib3

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

如何修复ImportError:没有名为packages.urllib3的模块?

我在Ubuntu机器上运行Python 2.7.6.当我twill-sh在终端中运行(Twill是用于测试网站的浏览器)时,我得到以下内容:

Traceback (most recent call last):
  File "dep.py", line 2, in <module>
    import twill.commands
  File "/usr/local/lib/python2.7/dist-packages/twill/__init__.py", line 52, in <module>
    from shell import TwillCommandLoop
  File "/usr/local/lib/python2.7/dist-packages/twill/shell.py", line 9, in <module>
    from twill import commands, parse, __version__
  File "/usr/local/lib/python2.7/dist-packages/twill/commands.py", line 75, in <module>
    browser = TwillBrowser()
  File "/usr/local/lib/python2.7/dist-packages/twill/browser.py", line 31, in __init__
    from requests.packages.urllib3 import connectionpool as cpl
ImportError: No module named packages.urllib3
Run Code Online (Sandbox Code Playgroud)

但是,我可以在Python控制台中导入urllib就好了.可能是什么原因?

python urllib2 twill urllib3

14
推荐指数
4
解决办法
5万
查看次数

没有名为urllib3的模块

我写了一个脚本来调用API并在上周成功运行它.本周,它不会运行.我收到以下错误消息:

Traceback (most recent call last):
  File "user_audit.py", line 2, in <module>
    import requests
  File "c:\Python27\lib\site-packages\requests\__init__.py", line 60, in <module>
    from .packages.urllib3.exceptions import DependencyWarning
  File "c:\Python27\lib\site-packages\requests\packages\__init__.py", line 29, in <module>
    import urllib3
ImportError: No module named urllib3
Run Code Online (Sandbox Code Playgroud)

我已经确认软件包是最新的,尝试卸载并重新安装它,但到目前为止还没有任何工作.有人可以帮忙吗?

附录

我按照@MSHossain的建议安装了urllib3,但后来又收到了一条错误信息.新消息引用了我编写的另一个文件,该文件创建了一个Python编译文件.另一个文件是使用smptlib尝试发送电子邮件.我不明白这会发生什么,但我删除了另一个文件,我的脚本运行没有任何问题.我已经接受了下面的答案,因为我能够点击安装urllib3,但它应该已经包含在请求模块中.

python xml urllib3 python-2.7

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

无法导入requests.packages.urllib3.util'重试'

我在Windows 8上使用Python 2.7 64位.我安装了Requests 2.3版.我试图运行此import语句作为在我的代码中引入重试次数的一部分:

from requests.packages.urllib3.util import Retry
Run Code Online (Sandbox Code Playgroud)

我也安装了urllib3(我刚刚通过Pip安装了它).我收到错误消息:

Traceback (most recent call last):
  File "C:\Python27\counter.py", line 3, in <module>
    from requests.packages.urllib3.util import Retry
ImportError: cannot import name Retry
Run Code Online (Sandbox Code Playgroud)

谁能告诉我为什么会这样?有没有其他依赖我不知道成功运行这行代码?

谢谢

python urllib3 python-requests

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

Python urllib3 错误 - 导入错误:无法导入名称 UnrewindableBodyError

我设置我的 cronjob 在特定时间调用我的脚本(ex- 2 4 5 10 * python3 mayank/exp/test.py)。当我的test.py被调用时,我将在我的 test.py 脚本中激活 virtualenv,如下所示。

activate = "/home/myserver/schedule_py3/bin/activate_this.py"
exec(open(activate).read())
Run Code Online (Sandbox Code Playgroud)

激活虚拟环境(其中包含 python3 和运行脚本所需的包)后,我尝试导入请求,它显示的错误为:-

File "schedule_module/Schedule/notification_task.py", line 2, in <module>
    import requests
  File "/usr/lib/python2.7/site-packages/requests/__init__.py", line 43, in <module>
    import urllib3
  File "/usr/lib/python2.7/site-packages/urllib3/__init__.py", line 10, in <module>
    from .connectionpool import (
  File "/usr/lib/python2.7/site-packages/urllib3/connectionpool.py", line 31, in <module>
    from .connection import (
  File "/usr/lib/python2.7/site-packages/urllib3/connection.py", line 45, in <module>
    from .util.ssl_ import (
  File "/usr/lib/python2.7/site-packages/urllib3/util/__init__.py", line 4, in <module>
    from .request …
Run Code Online (Sandbox Code Playgroud)

python urllib3 python-2.7 python-3.x python-requests

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

在后续重试之间更改请求标头

考虑使用 OAuth 令牌的 http 请求。访问令牌需要作为不记名包含在标头中。但是,如果令牌已过期,则需要再次请求刷新令牌,然后重试。所以自定义重试对象将如下所示:

s = requests.Session()
### token is added to the header here
s.headers.update(token_header)
retry = OAuthRetry(
        total=2,
        read=2,
        connect=2,
        backoff_factor=1,
        status_forcelist=[401],
        method_whitelist=frozenset(['GET', 'POST']),
        session=s
    )
adapter = HTTPAdapter(max_retries=retry)
s.mount('http://', adapter)
s.mount('https://', adapter)
r = s.post(url, data=data)
Run Code Online (Sandbox Code Playgroud)

重试类:

class OAuthRetry(Retry):
    def increment(self, method, url, *args, **kwargs):
        # refresh the token here. This could be by getting a reference to the session or any other way.
        return super(OAuthRetry, self).increment(method, url, *args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

问题是刷新token后,HTTPConnectionPool在调用increment后仍然使用相同的header来发起请求。请参阅:https : //github.com/urllib3/urllib3/blob/master/src/urllib3/connectionpool.py#L787。尽管池的实例以增量方式传递,但更改那里的标头不会影响调用,因为它使用标头的本地副本。

这似乎是一个用例,应该经常出现请求参数在重试之间更改。 …

python urllib3 python-requests

12
推荐指数
1
解决办法
442
查看次数

如何使用python请求执行限时响应下载?

当用python下载大文件时,我想为时间限制设置一个时间限制,不仅适用于连接过程,还适用于下载.

我正在尝试使用以下python代码:

import requests

r = requests.get('http://ipv4.download.thinkbroadband.com/1GB.zip', timeout = 0.5, prefetch = False)

print r.headers['content-length']

print len(r.raw.read())
Run Code Online (Sandbox Code Playgroud)

这不起作用(下载没有时间限制),正如文档中正确指出的那样:https://requests.readthedocs.org/en/latest/user/quickstart/#timeouts

如果有可能,这将是伟大的:

r.raw.read(timeout = 10)
Run Code Online (Sandbox Code Playgroud)

问题是,如何为下载设置时间限制?

python urllib3 python-requests

11
推荐指数
1
解决办法
6656
查看次数