问题标签 [httplib2]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 104, 'Connection reset by peer' 套接字错误,或关闭套接字何时导致 RST 而不是 FIN?
我们正在并行开发 Python Web 服务和客户端网站。当我们从客户端向服务发出 HTTP 请求时,一个调用会在 socket.py 中持续引发一个 socket.error,如下所示:
当我用wireshark收听时,“好”和“坏”的反应看起来非常相似:
- 由于 OAuth 标头的大小,请求被分成两个数据包。该服务使用 ACK 响应两者
- 服务发送响应,每个标头一个数据包(HTTP/1.0 200 OK,然后是 Date 标头等)。客户端用 ACK 响应每个。
- (好请求)服务器发送一个FIN、ACK。客户端以 FIN、ACK 响应。服务器响应 ACK。
- (错误请求)服务器发送 RST、ACK,客户端不发送 TCP 响应,客户端引发 socket.error。
Web 服务和客户端都在运行 glibc-2.6.1 的 Gentoo Linux x86-64 机器上运行。我们在同一个 virtual_env 中使用 Python 2.5.2。
客户端是一个 Django 1.0.2 应用程序,它调用 httplib2 0.4.0 来发出请求。我们使用 OAuth 签名算法对请求进行签名,OAuth 令牌始终设置为空字符串。
该服务正在运行 Werkzeug 0.3.1,它使用 Python 的 wsgiref.simple_server。我通过 wsgiref.validator 运行 WSGI 应用程序,没有任何问题。
看起来这应该很容易调试,但是当我在服务端跟踪一个好的请求时,它看起来就像是错误的请求,在 socket._socketobject.close() 函数中,将委托方法变成了虚拟方法。当 send 或 sendto(不记得是哪个)方法被关闭时,发送 FIN 或 RST,客户端开始处理。
“对等连接重置”似乎将责任归咎于服务,但我也不信任 httplib2。客户有错吗?
** 进一步调试 - 看起来像 Linux 上的服务器 **
我有一台 MacBook,所以我尝试在一台上运行该服务,在另一台上运行客户端网站。Linux 客户端调用 OS X 服务器时没有错误 (FIN ACK)。OS X 客户端调用带有错误的 Linux 服务(RST ACK 和 (54, 'Connection reset by peer'))。因此,它看起来像是在 Linux 上运行的服务。是 x86_64 吗?一个糟糕的 glibc?wsgiref? 还在找...
** 进一步测试 - wsgiref 看起来很不稳定 **
我们已经使用 Apache 和 mod_wsgi 投入生产,并且连接重置已经消失。请参阅下面的答案,但我的建议是记录连接重置并重试。这将使您的服务器在开发模式下运行良好,并在生产中稳定运行。
python - Python 库 httplib2 是否使用 GET 字符串缓存 URI?
在以下示例中,正确缓存了什么?是否有一个 Vary-Header 我必须为 GET 字符串设置服务器端?
python - Twisted 是 httplib2/socket 的替代品吗?
许多 python 库,甚至是最近编写的库,都使用 httplib2 或套接字接口来执行网络任务。
由于它们的阻塞特性,它们显然比 Twisted 更容易编码,但我认为这是将它们与其他代码集成时的一个缺点,尤其是 GUI 代码。如果您希望在避免多线程的同时实现可扩展性、并发性或 GUI 集成,那么 Twisted 是一个自然的选择。
所以我会对这些问题的意见感兴趣:
- 是否应该使用 Twisted 编写新的网络代码(小型命令行工具除外)?
- 你会在同一个项目中混合使用 Twisted、http2lib 或 socket 代码吗?
- Twisted pythonic 是否适用于大多数库(它比替代品更复杂,引入对非标准包的依赖......)?
编辑:请让我换一种说法。您是否觉得使用 Twisted 编写新的库代码可能会阻碍其采用?Twisted 具有明显的优势(尤其是 gimel 所述的可移植性和可扩展性),但它不是核心 python 库这一事实可能被某些人认为是一个缺点。
python - 使用 httplib2 处理身份验证和代理服务器
我正在尝试测试与需要对我打算使用的操作进行身份验证的 Nexus 服务器的交互,但我还需要处理内部代理服务器。
根据我的(有限的)理解,我可以向开瓶器添加多个处理程序。但是我仍然收到 401 响应。我已经检查了用户名和密码是否有效。我不确定是否需要 cookie 来执行此操作,如果需要,它们将如何包含在内。有什么建议么?
这是生成的 URLError 的 headers 字段:
更新 似乎 Nexus 实现了Restlet 的 AuthenticationHelper的自定义版本。感谢亚历克斯,我知道要寻找什么。
python - 实现自定义 Python 身份验证处理程序
上一个问题的答案显示 Nexus 实现了一个名为“NxBASIC”的自定义身份验证帮助程序。
如何开始在 python 中实现处理程序?
更新:
根据 Alex 的建议实施处理程序看起来是正确的方法,但无法尝试从 authreq 中提取方案和领域。authreq 的返回值为:
AbstractBasicAuthHandler.rx.search(authreq) 只返回一个元组:
所以 scheme,realm = mo.groups() 失败。从我有限的正则表达式知识看来,来自 AbstractBasicAuthHandler 的标准正则表达式应该匹配方案和领域,但似乎不匹配。
正则表达式是:
更新 2:从检查 AbstractBasicAuthHandler 来看,默认处理是:
更改为此有效。我现在只需要针对正确的领域设置密码。谢谢亚历克斯!
python - 如何修复此错误或对此错误进行例外处理
我正在创建一个从任何网页获取图像网址的代码,该代码在 python 中并使用 BeutifulSoup 和 httplib2。当我运行代码时,我得到下一个错误:
有人可以向我解释如何修复或排除错误
javascript - 使用 JavaScript 功能获取命令行 URL
我在 python 中使用 curl、php 和 httplib2 来获取 URL。
但是,有些页面在加载页面后使用 JavaScript (AJAX) 检索数据,然后它们只是覆盖页面的特定部分。
那么,是否有任何可以处理 JavaScript 的命令行实用程序?
要知道我的意思,请访问:monster.com 并尝试寻找工作。
您将看到 Ajax 正在获取作业列表。所以,如果我想根据我的关键字搜索来获取工作,我会得到没有工作的页面。
但是通过浏览器它可以工作。
python - 使用 httplib2.Http() 对象时的最佳实践
我正在编写一个带有这样的类的 pythonic Web API 包装器
如您所见,我正在使用该_http()
方法来简化与httplib2.Http()
对象的交互。这个方法在类中经常被调用,我想知道与这个对象交互的最佳方式是什么:
- 在 中创建对象,
__init__
然后在调用方法时重用它_http()
(如上面的代码所示) httplib2.Http()
或者为方法的每次调用在方法内部创建对象_http()
(如下面的代码示例所示)
python - 使用 Python 通过 HTTP 下载压缩内容
使用 Python 下载网页时如何利用 HTTP 1.1 的压缩?
我目前正在使用内置的urllib模块来下载网页内容。通读文档,我找不到任何确实使用压缩的信息。
它是否已经内置在urllib中,还是我可以使用另一个库?
python - httplib2,如何设置多个cookie?
正如您可能知道的那样,通常情况下,HTTP 服务器发送的不仅仅是 session_id cookie;但是,httplib2 使用字典处理 cookie,如下所示:
那么,如何设置额外的 cookie?如果用字典处理,我不能有双 Cookie 键:S。
谢谢你的时间。