我有一个Django应用程序(由于不明原因)需要知道它运行的服务器的IP地址,以便将其呈现给客户端。我非常确定服务器将启动并运行eth0
,所以我需要eth0
的地址。
最好的方法是什么?理想情况下,这应该在uwsgi启动时枚举,而不一定是每个请求。我考虑过在settings.py
中添加一些代码,但认为可能会在每次请求时运行/枚举。
编辑我应该补充一点,这是一个debian linux服务器,运行nginx并在uwsgi中运行Django应用程序。
答案 0 :(得分:1)
这是我用来获取公共面向ip(在* nix系统上)的代码:
# Hack to find machine NIC IP
import socket
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.connect(("8.8.4.4", 80))
MACHINE_IP = s.getsockname()[0]
s.close()