我的服务器上运行了一个python烧瓶应用程序:
if __name__ == '__main__':
port = int(os.environ.get("PORT", 6600))
app.run(host='0.0.0.0', port=port)
我有一个JS脚本从该应用程序获取信息,我不想每次部署或更改域时在JS脚本中手动更改IP或域,所以我问是否有任何方法可以JS知道python应用程序的IP或主机名吗?
这是我的结构:
index.py< =主要应用
的静态
**的index.html
**的script.js
由于
答案 0 :(得分:0)
注册域名并坚持使用。在您的javascript和/或配置中使用域名。
确保注册商提供更新" A记录的界面" (IP地址)并将其指向您的服务器。每当您更改IP地址时,请更新您的域的A记录。
答案 1 :(得分:0)
如果我正确理解您的问题,根据您的设置,您可以随意使用两种方法。
选项1:如果您的JavaScript代码与Python脚本在同一台计算机上运行,您只需始终从JavaScript代码中访问127.0.0.1(因为绑定到0.0.0.0)将使所有接口都可以访问Python服务器,包括127.0.0.1的回送接口。
选项2:如果您的JavaScript代码位于远程服务器上,那么最简单的解决方案就是使用某种Dynamic DNS服务作为中介。因此,您最终将为您的Python服务器提供两个域:一个可用于世界其他地方的静态域名,例如www.mypythonserver.com
,以及一个仅由您的JavaScript代码知道的动态DNS条目,例如{{1 (永久硬编码到您的JavaScript代码中)。这两个域都应始终解析为您的Python服务器的主机地址,而无需动态DNS输入所需的手动干预。
答案 2 :(得分:-1)
您可以在脚本文件中使用templating
,当用户请求脚本时,该文件将填充端口号。
有许多模板可供选择:
https://wiki.python.org/moin/Templating
通常会像
// in script.js
var myport = {{ port }};
并在你的python代码中:
# if request is for script.js
# respond with template
request.send(my_templating_engine('script.js' , port))