仅在从 Windows 运行时出现 500 内部错误 (7)

Posted

技术标签:

【中文标题】仅在从 Windows 运行时出现 500 内部错误 (7)【英文标题】:500 internal error only when running from windows (7) 【发布时间】:2013-05-06 17:48:36 【问题描述】:

问题:使用此代码访问网站时程序面临500 Internal Error:(我使用PyQt)

只发生在我的 windows 机器上 (WIN7) 而不是我的 linux (ubuntu 12.04 LTS) fyi 它们是不同的计算机(但在同一个 LAN 上)

def sendBearer_req(self):
    request = QNetworkRequest()
    request.setUrl(QUrl("https://api.twitter.com/oauth2/token"))
    request.setRawHeader('Content-Type', 'application/x-www-form-urlencoded;charset=UTF-8')
    request.setRawHeader('Authorization', 'Basic %s' % cons_enc)

    self.network_manager = QNetworkAccessManager()
    if self.network_manager.receivers(SIGNAL("finished")) > 0:
        self.network_manager.finished.disconnect()
    self.network_manager.finished.connect(self._request_finished)        

    self.network_manager.post(request, self.urlencode_post('grant_type' : 'client_credentials'))

def _request_finished(self, reply):
    if not reply.error() == QNetworkReply.NoError:
        # request probably failed
        print(reply.error())
        print(reply.errorString())
        print("retrying")
        self.sendBearer_req()
    else:
        self.sendBearer(reply)

输出:

299    
Error downloading URL - server replied: Internal Server Error    
retrying

其中 URL 是页面 url。


我尝试了许多 URL,以防问题确实出在服务器本身,但事实并非如此。 cons_enc 有效(b64 编码字符串)

如何修复它?如果你知道为什么它在 ubuntu 中有效?

【问题讨论】:

【参考方案1】:

状态码 299 是非标准的,Twitter API Error Code Reference 没有列出它。可能原因与此代码存根无关

QNetworkReply defines 代码 299 为“未知错误”,可能是 Qt 错误。

作为建议,请尝试使用正确的Twitter API for Python。

【讨论】:

这是一项禁止我使用 Twitter API 的作业。并且错误是 500 而不是 299(299 是 QNetworkReply 错误代码而不是 Twitter 错误代码) @Dan,不同的构建/版本? 解决了,是我的问题,我不小心用 Python3 在 windows 上运行它,它是为 Python2.7 设计的 我不敢相信 PyQt 在启动前不检查 Python 版本! @esseks:什么?为什么 PyQt 会检查 python 版本? PyQt 在 Py2 和 Py3 下运行得很好。并且您可以编写一个可以在两个版本下运行的代码。【参考方案2】:

发现问题,显然是我在 windows 上的 Python 3.3 上意外运行的,它是为 Python 2.7(在 linux 盒子中使用的)构建的。

也许 PyQt 应该在启动之前检查一下!

【讨论】:

以上是关于仅在从 Windows 运行时出现 500 内部错误 (7)的主要内容,如果未能解决你的问题,请参考以下文章