python - Linux 上的 python httplib2 问题

标签 python linux httplib2

我正在使用以下代码片段来调用需要基本身份验证的 Web 服务:

import urllib
import httplib2
url='http://heywatch.com/download.json'
body={'username':'my_username','password':'my_password'}
header_data={'Accept': 'application/json'}
http=httplib2.Http()
response, content = http.request(url, 'POST', headers=header_data,     body=urllib.urlencode(body))

我在两个不同的环境中运行相同的代码片段:

Mac OSX 10.6.6,python 版本 2.6.1 - 我得到了正确的响应

Linux - centos,python 版本 2.6.6 - 我收到以下异常:

.....
File "/usr/lib/python2.6/site-packages/httplib2/__init__.py", line 1129, in _conn_request
    raise ServerNotFoundError("Unable to find the server at %s" % conn.host)
ServerNotFoundError: Unable to find the server at heywatch.com

我已经在具有不同 python 版本的多种 Linux 版本上运行了此代码,一切正常。我还注意到 curl 在特定机器上无法正常工作。以下curl命令(模仿上面的代码)在我的Mac OSX上运行良好:

curl -u username:password -X POST -d "url=https://s3.amazonaws.com/my_video_to_be_encoded.mov" -d "title=new_video" -d "automatic_encode=true" -d "ping_url_after_encode=http://mydomain/video_encode_success" https://heywatch.com/download.json

但在受影响的 Linux 工作站上失败并显示以下消息:

curl: (6) Couldn't resolve host 'heywatch.com'

知道为什么会发生这种情况吗?某些操作系统设置似乎不正确。如果有帮助,我正在使用 amazon version of linux在亚马逊 EC2 中,它是相当锁定的。

最佳答案

这与 Linux 盒子解析 heywatch.com 的方式有关。您可以执行 ping 操作来查看 heywatch.com 是否可以访问(可能无法访问)。您可能想查看 Linux 机器上的/etc/resolv.conf 以了解配置了哪些名称服务器,并询问亚马逊您是否正在使用其中的任何名称服务器。

FWIW,我只是尝试在 linode 的 ubuntu 上解决 heywatch,似乎解决得很好。

关于python - Linux 上的 python httplib2 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6591892/

相关文章:

Python 列表到字符串的转换

python - 返回元组列表的函数。

python - 使用默认方法优雅地加载 YAML 配置

linux - Linux 内核在进程暂停时长方面提供什么保证?

linux - linux下如何取消目录的写权限?

python - 导入错误:没有名为 httplib2 的模块

Python问答游戏逻辑错误

python - 覆盖源代码中 setup.cfg 中的 DEFINE

linux - 调用交互式下标并将其输出保存到变量

Python CouchDB/httplib-错误 : [Errno 61] Connection refused