【问题标题】:Get non-local host name from Google App Engine dev_appserver从 Google App Engine dev_appserver 获取非本地主机名
【发布时间】:2011-10-22 22:47:16
【问题描述】:

我想在运行 dev_appserver.py 时获取 Google App Engine 中的主机名,因为 GAE 正在向外部服务器发出请求,而该服务器需要知道将其响应发送到哪里。

不幸的是,规范的 Python 方式似乎不起作用,因为:

import socket
socket.gethostbyname(socket.gethostname())

socket 库在 GAE 中不起作用。

还有,

os.environ['HTTP_HOST'] 
os.environ['SERVER_NAME'] 

都是本地主机。

如何获得外部服务器连接到 GAE 的 IP?

感谢阅读

【问题讨论】:

    标签: python google-app-engine sockets


    【解决方案1】:

    套接字包可能在 GAE 沙箱中被禁用。

    您是否尝试过使用请求对象来确定这一点? http://docs.webob.org/en/latest/reference.html#id1

    可能是最可靠的方法。

    【讨论】:

    • 这行得通,尽管可能必须添加--address=192.168.x.x(其中192.168.x.x 是GAE 监听的地址)作为dev_appserver.py 的参数,并通过该地址连接到GAE;请注意,SERVER_NAME:SERVER_PORT 设置在服务器上,而 HTTP_HOST 来自客户端(因此不可靠)。我使用的是 Django 而不是 Webob,所以request.META['SERVER_NAME'] 是获取正确地址的规范方法。
    猜你喜欢
    • 1970-01-01
    • 2013-11-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 2015-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多