【问题标题】:Python App Engine's urllib2: works locally but not when deployed to GAEPython App Engine 的 urllib2:在本地工作,但在部署到 GAE 时不工作
【发布时间】:2013-09-22 19:59:03
【问题描述】:

直到几天前,我有一个在 GAE 和测试服务器上运行良好的应用程序。它连接到远程站点,自动登录和浏览页面并输入信息。远程站点使用动态 URL 来跟踪会话,每个页面都提供下一次调用的链接。 该程序非常基本:urllib2.urlopen 然后正则表达式提取下一个 url 键,然后新调用 urllib2.urlopen 等等。

现在我的应用程序在测试服务器上仍然可以完美运行,但在 GAE 上部署时失败:我对 urllib2.open 进行了一系列调用,并且大多数时候,远程站点说它已经在第二次调用时丢失了会话,但是1/10th 我可以参加第三次电话会议,一旦 GAE 成功参加第四次电话会议。

这似乎表明这不是远程站点的安全问题(没有改变),也不是我在其他帖子中读到的重定向和 cookie 问题。

用户向我报告说它在 9 月 13 日之前运行良好,并且在 20 日向我报告了失败。最近 GAE 中对 URLfetch 的处理是否发生了变化?

我刚刚花了 2 天时间解决这个问题,但没有任何切实的线索。

可能是IP地址的问题?远程服务器可以通过 IP 地址和动态 URL 一起控制会话,我可以想象 GAE 不保证在对 GAE 的同一次调用中,对 URLlib 的所有调用都由同一台机器处理?这可以解释为什么有时它适用于两个或三个连续的 URL。我不知道足够的GAE内部机制来确认。

提前感谢您的想法。

【问题讨论】:

    标签: python google-app-engine urllib2


    【解决方案1】:

    我们不保证urlfetch 呼叫将全部通过同一个 IP 地址发出。

    【讨论】:

    • 谢谢。是否有技术解释 URLFetch 最近改变了它的工作方式?我同时切换到了付费报价,这可以解释一下吗?
    • 我建议与运行远程服务器的人一起检查他们是否使用 IP 地址来进行会话亲和性。您可能只是不走运,之前没有遇到我们的非保证。
    • 我过去有时会遇到一些麻烦,但似乎 9/10 的提取是在同一台服务器上完成的(在序列的短时间内),现在只有机会有一个不同的服务器获取是 9 on 10(在同一短时间内)。我知道我应该使用其他服务来保证留在同一台服务器上。非常感谢您的知识。
    猜你喜欢
    • 2014-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-20
    • 2021-05-22
    • 2020-09-24
    • 1970-01-01
    相关资源
    最近更新 更多