- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
所以我在本地主机上运行 Google App Engine 开发服务器 (Java)。我正在尝试使用 Python 2.7 urllib.urlopen 检索 URL。初始检索有效,但是当我尝试调用 read() 或 readlines() 时,我得到:
Traceback (most recent call last):
File "./getMap.py", line 6, in <module>
lst = f.readlines()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 513, in readlines
line = self.readline()
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 445, in readline
data = self._sock.recv(self._rbufsize)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/httplib.py", line 552, in read
s = self.fp.read(amt)
File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/socket.py", line 378, in read
data = self._sock.recv(left)
socket.error: [Errno 54] Connection reset by peer
浏览器工作,wget 工作。 urllib 和 urllib2 都会出现问题。这是代码:
import urllib2
f = urllib2.urlopen("http://localhost:8080/default.jsp")
lst = f.readlines()
for a in lst:
print a
奇怪的是,我可以使用 readline() 打印出文件的第一行——我只是无法获取整个 文件。我感觉 Python 可能是“懒惰地”不请求 URL 的全部内容,直到我通过 readlines() 请求它,然后应用引擎开发服务器已经过分热心地关闭了连接。但我可能完全错了。
我尝试研究这个问题,但没有发现任何适用的东西。我看到的大多数 Google 命中都围绕着随机的、间歇性的计时问题(这不是间歇性问题,它是可靠的)或代理/防火墙问题(这里没有发生这样的事情)。
假设我的理论是正确的——有没有办法告诉 urlopen 立即获得整个响应,就像 wget 和浏览器似乎正在做的那样?或者有没有办法告诉 GAE 开发服务器冷静下来,不要那么快关闭连接?如果没有必要,我宁愿不深入研究较低级别的 Python 套接字。
谢谢
附注说明:python 脚本只是从命令行运行,并试图连接到在同一个盒子上运行的 GAE 开发服务器。我不是在尝试从自身或类似的东西连接到 GAE 开发服务器,GAE 服务器运行的是 Java,而不是 Python。我实际上想在这里做的是:我的 GAE 网络应用程序有一些网络服务,我正在编写一个批处理脚本来获取/发布到这些网络服务,这样当我需要重置/清除数据存储时(例如: 数据已损坏)我可以先使用此 Python 脚本备份数据,然后删除数据存储,然后再次使用该脚本将数据重新加载。
更新:所以我尝试了更多测试。 Python 可以轻松读取 GAE 开发服务器提供的任何 HTML 文件。然而,任何 JSP,即使是最简单的“hello world”JSP,都无法读取并出现相同的“连接被对等重置”错误。我将尝试更新到 GAE SDK 的 1.6.1 版本,无论如何我都必须在某个时候这样做,最好是现在。希望它能解决这个问题。
最佳答案
虽然我看不出您的 Python 代码有任何问题,也不知道您的 Java GAE 设置可能有什么问题,但我建议对这个问题采取不同的看法。
您提到您基本上想向您的服务器发送 GET/POST 请求并保存/稍后读取内容,并且 wget 等命令行工具可以正常工作。当您需要进行更高级的文本编辑时,我建议您使用 bash 脚本以及 curl 和 python。
curl http://localhost:8080/default.jsp > default.bak
... wipe db ...
data = $(cat default.bak)
curl -X "POST" -d "backup=$data" http://localhost:8080/default_restore.jsp
如果您需要在发送数据之前编辑数据,您可以使用 python 从 default.bak 读取或通过管道将其传输到标准输入
data = $(cat default.bak)
python your_script.py $data
curl http://localhost:8080/default.jsp | python yourscript.py > default.bak
关于java - Python 脚本不会在本地主机 gae 开发服务器的 urlopen 之后读取()——对等连接重置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8820042/
我有一些代码使用 mechanize 和 beautifulsoup 来抓取一些数据。该代码在测试机器上运行良好,但生产机器正在阻止连接。我得到的错误是: urlopen error [Errno 1
我有一个正在测试的简单网站。它在本地主机上运行,我可以在我的网络浏览器中访问它。索引页就是简单的“运行”二字。 urllib.urlopen 将成功读取页面,但 urllib2.urlopen 不
我只是想更好地了解这里发生了什么,我当然可以使用 urllib2 来“解决”这个问题。 import urllib import urllib2 url = "http://www.crutchfie
import urllib print urllib.urlopen('http://www.reefgeek.com/equipment/Controllers_&_Monitors/Neptune
我刚刚开始编写 Python,并且遇到了 urllib 似乎是 Amazon.com 独有的问题。如果我做类似的事情: pageIn = urllib.request.urlopen("http://
我想模拟模块中对 urllib.request.urlopen 的调用。当它是单个文件时它可以工作,但是当我把它放在一个包中并在包的 __init__.py 中导入模块时,我不能再模拟它了。 复制 假
# Get the content type of a URL def get_url_type(url: str) -> str: r = urlopen(url) header = r.h
我尝试将现有 URL 作为参数传递,以将其 HTML 加载到单个 txt 文件中: for line in open('C:\Users\me\Desktop\URLS-HERE.txt'): if
我对使用 Request、urlopen 和 JSONDecoder().decode() 有点困惑。 目前我有: hdr = {'User-agent' : 'anything'} # heade
此代码用于打印网页。它现在打印一个空格,即使在浏览器中查看时该页面清楚地包含内容 from urllib.request import urlopen f = urlopen('http://onli
我刚买了 synology NAS (DS213J),我想在上面运行 python 脚本。 我的 python 脚本: 1 #!/opt/bin/python 2 3 import url
我在名为 urlopen_test() 的函数中使用 urllib.urlopen()。在这个函数中我调用了两次 urlopen,第一次调用很快,但第二次调用速度很快。有人打电话来帮我弄清楚为什么吗?
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 这个问题似乎是题外话,因为它缺乏足够的信息来诊断问题。 更详细地描述您的问题或include a min
1.data参数 data是可选的,需要使用bytes()方法将参数转化为字节编码格式的内容。如果传递了这个参数,请求方式就不是GET方式,而是POST方式。
我正在使用 迭代保存在 http 网站上的 .dat 文件 import urllib2 test_file = urllib2.urlopen('http://~/file.dat') 然后,我有一
这是我的问题: import urllib2 response=urllib2.urlopen('http://proxy-heaven.blogspot.com/') html=response.r
我没有使用 python 的经验,也没有使用下面的代码打开 url 并读取响应的经验。我收到未经授权的错误,因为该网站使用 Windows 身份验证。有人可以提供有关如何发送用户名和密码的代码示例吗?
我希望我的程序尝试打开页面并在时间间隔[0,t]内获取数据,如果该时间到期,连接应该关闭。 我正在使用urllib2来尝试完成任务。 t=1 url="http://example.com" resp
我正在尝试使用 python 程序填写表格,它对于某些网站效果很好,但对于这个特定的网站则不然,我不知道为什么。 这是代码片段 query = { 'adults':'1', 'children':'
当我使用 urllib2.urlopen() 时,我在考虑它只是为了标题读取还是实际上带回了整个网页? IE 是否在调用 urlopen 或调用 read() 时实际获取 HTML 页面? handl
我是一名优秀的程序员,十分优秀!