为什么此请求无法使用此 url

Why is this requests get not working with this url

如果我 运行 这个 Python 代码我的程序就挂了。 (我没有收到任何错误。)

import requests
url = "https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/generative/dcgan.ipynb"
r = requests.get(url)

但这完全符合预期。

import requests
url = "https://whosebug.com" 
r = requests.get(url)

使用 curl 获取 github 文件也能正常工作。

curl https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/generative/dcgan.ipynb

那么你能重现我的问题吗,我是对一些微不足道的东西加锁了还是只是我的 python 环境的问题?

python3 --version
Python 3.8.10

pip show requests
Name: requests
Version: 2.22.0
Summary: Python HTTP for Humans.
Home-page: http://python-requests.org
Author: Kenneth Reitz
Author-email: me@kennethreitz.org
License: Apache 2.0
Location: /usr/lib/python3/dist-packages
Requires:
Required-by:

它非常适合我。如果它 'hangs' 连接不良可能会导致它。你可以做的是提供一个 timeout 参数,它将等待那么多秒,如果它没有收到来自服务器的响应,它将继续执行代码。

import requests
url = "https://whosebug.com" 
r = requests.get(url, timeout=2)

对我有用。但是,如果 requests 仍然存在问题,您甚至可以使用 urllib.request

例如:

import urllib.request
import requests

url = "https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/generative/dcgan.ipynb"

r = requests.get(url)
print(r)
u = urllib.request.urlopen(url).getcode()
print(u)

它们具有相同的输出:

<Response [200]>
200

您可能被重定向卡住了。您可以通过设置 allow_redirects=False 来克服这个问题。以下代码对我有用:

import requests
url = "https://raw.githubusercontent.com/tensorflow/docs/master/site/en/tutorials/generative/dcgan.ipynb"

try: 
    r = requests.get(url, allow_redirects=False, timeout=10)
except requests.exceptions.Timeout as err: 
    print(err)

print(r.json())