App Engine生产中代理服务器后面的URLFetch

时间:2012-01-10 07:27:24

标签: python google-app-engine proxy urlfetch

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

具体来说,每次我使用urlfetch进行呼叫时,我都希望GAE通过代理服务器。我想在制作时这样做,而不仅仅是开发。

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

2 个答案:

答案 0 :(得分:3)

你可以随时自己动手:

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

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

答案 1 :(得分:0)

我们遇到了此问题,并与Google Cloud支持联系。他们建议我们使用Google App Engine以及一些app.yaml设置,自定义网络和IP转发NAT网关实例。

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

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

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