如果请求来自不同的IP地址,我使用的第三方API会使OAuth令牌无效。这会导致问题,因为该服务在多个主机上运行。
理想情况下,我希望只选择通过单个IP路由此特定API的请求。
我考虑过设置代理服务器,但我担心我无法将此代理扩展到1台机器之外。
有什么建议吗?
答案 0 :(得分:2)
这里理想的选择当然是为每台机器获取OAuth令牌。 (或者,更好的是,让服务允许您在IP上共享令牌。)但我认为有一些原因你无法做到这一点。
在这种情况下,你可能做想要一个代理服务器。
只有通过该代理路由此特定API的请求的选项很简单。设置显式代理而不是透明代理,并为这些特定方法指定显式代理。
由于您还没有向我们展示或甚至描述过您的代码,我无法向您展示如何使用您正在使用的库,但here's how to do it with requests
,以及stdlib urllib
或大多数其他第三方库并没有那么难。
但是,为了完整性:只要所有机器都在您可以控制的路由器后面,就不可能使单独的机器看起来具有相同的IP地址。实际上,这正是您通过NAT通过典型的家庭DSL /电缆设置获得的:每台机器都有自己的内部地址,但它们都共享一个公共地址。但它可能不是你想要的。首先,如果你的机器实际上是GCP主机,你就无法控制路由器,你甚至无法控制它们是否在同一个网络上(如果你想要运行一个网络)软件路由器将它们全部通过管道传输)。此外,NAT会导致服务器出现各种问题。而且,由于您的担心是扩展,一旦您必须扩展到一个子网以外,使用NAT是一场噩梦。如果这些实例是服务器(如果您在GCP上运行它们,这似乎很可能),甚至更多。最后,要使用NAT仅与一个服务进行通信,您需要非常复杂的路由表,或者每台计算机需要一个额外的网络接口(您可以将其放在不同的路由器后面)。所以,我怀疑这是你真正想要的。