【问题标题】:URLFetch behind a Proxy Server on App Engine ProductionApp Engine Production 上的代理服务器后面的 URLFetch
【发布时间】:2012-01-10 07:27:24
【问题描述】:

在 Google App Engine 上使用 urlfetch 时,有没有办法指定代理服务器?

具体来说,每次我使用 urlfetch 拨打电话时,我都希望 GAE 通过代理服务器。我想在生产环境中执行此操作,而不仅仅是开发人员。

我想使用代理,因为使用 google 的出站 IP 地址存在问题(速率限制、无静态出站 IP、有时被列入黑名单等)。如果您可以编辑 http 消息本身,设置代理通常很容易,但 GAE 的 API 似乎不允许您这样做。

【问题讨论】:

  • 您认为设置代理如何有助于限制速率等?
  • @DanielRoseman - 如果第 3 方基于每个 IP 限制请求,使用代理会有所帮助。例如,Twitter 将请求限制为 150 个/小时/IP 地址。
  • @DanielRoseman BenP 是对的。每个 GAE IP 地址上有数千个应用程序,这些限制会立即用完(顺便说一句,感谢您的反对)。

标签: python google-app-engine proxy urlfetch


【解决方案1】:

你总是可以自己滚动:

  1. 在固定目的地的情况下:只需在代理服务器上设置固定端口转发。然后从 GAE 向代理发送请求。如果您有多个目的地,则在单独的端口上设置转发,每个目的地一个。

  2. 如果是动态目标(通过固定端口转发处理太多),您的 GAE 应用程序会添加一个包含最终目标的自定义 http 标头 (X-Something),然后连接到自定义代理。自定义代理检查此字段并将请求转发到目的地。

【讨论】:

  • 我和@speedplane 的情况一样,这很有帮助。以前从未这样做过,有没有推荐的现有代理服务器来做这样的事情(比如 Squid)?
  • 嗨,Peter,您知道代理服务器系统可以像 GAE 一样出色地扩展吗?
【解决方案2】:

我们遇到了这个问题并联系了 Google Cloud 支持。他们建议我们使用具有一些 app.yaml 设置、自定义网络和 ip 转发 NAT 网关实例的 Google App Engine 灵活。

这对我们不起作用,因为 App Engine Standard 中的许多核心功能并未在 App Engine Flexible 中实现。本质上,我们需要重写我们的产品。

因此,为了使适用的 URL 获取请求看起来具有静态 IP,我们创建了一个自定义代理:https://github.com/csgactuarial/app-engine-proxy

出于冗余原因,我建议将其实现为多区域、多区域、负载平衡系统。

【讨论】:

  • 非常感谢,显然我们已经实现了与您类似的代理服务器,只是在创建 proxy.web 时缺少 headers.host 配置。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-30
  • 1970-01-01
  • 2012-08-14
  • 1970-01-01
  • 2014-07-17
  • 2015-03-18
  • 1970-01-01
相关资源
最近更新 更多