【问题标题】:Urllib2 POST request results in 409 conflict errorUrllib2 POST 请求导致 409 冲突错误
【发布时间】:2013-04-25 11:55:38
【问题描述】:

我正在通过 Django 的视图在 http://pubsubhubbub.appspot.com 致电 google 的 pubsubhubbub 发布者。我想使用它获取所有 youtube 上传提要。我正在使用 urllib2.Request 向它发送一个“发布”请求,我收到 409 冲突错误。我已经正确设置了回调 url,如果我尝试使用:python manage shell 发布相同的请求,它工作得很好。我使用 nginx 服务器作为生产服务器上 gunicorn 实例的代理。什么可能是错的。提前致谢。

>>> response.request
<PreparedRequest [POST]>
>>> response.request.headers
{'Content-Length': u'303', 'Content-Type': 'application/x-www-form-urlencoded', 'Accept-Encoding': 'gzip, deflate, compress', 'Accept': '*/*', 'User-Agent': 'python-requests/1.2.0 CPython/2.6.6 Linux/2.6.18-308.8.2.el5.028stab101.3'}
>>> response.request.body
'hub.verify=sync&hub.topic=http%3A%2F%2Fgdata.youtube.com%2Ffeeds%2Fapi%2Fusers%2FUCVcFOpBmJqkQ4v6Bh6l1UuQ%2Fuploads%3Fv%3D2&hub.lease_seconds=2592000&hub.callback=http%3A%2F%2Fhypedsound.cloudshuffle.com%2Fhub%2F19%2F&hub.mode=subscribe&hub.verify_token=subscribe7367add7b116969a44e0489ad9da45ca8aea4605'

请求正文,生成的两个请求的标头相同。

这里是 nginx 配置文件: http://dpaste.org/bOwHO/

【问题讨论】:

  • 你应该下载 Wireshark (wireshark.org) 来检查两个不同调用发送/接收的数据包,看看它们有什么不同。

标签: python django nginx urllib2 gunicorn


【解决方案1】:

原来我使用的是 TransactionMiddleware,它在调用 model.save() 时不会提交到 db,这会造成问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-02-08
    • 1970-01-01
    • 2016-02-20
    • 2021-07-13
    • 2022-01-18
    相关资源
    最近更新 更多