当前位置: 首页 > 面试题库 >

如何在Flask中获取当前端口号?

杨高翰
2023-03-14
问题内容

使用Flask,如何获得flask连接的当前端口号?我想使用端口0在随机端口上启动服务器,但是我还需要知道我在哪个端口上。

编辑

我认为我已经找到解决该问题的方法,尽管它不能解决问题。我可以遍历以49152开头的端口,并尝试通过使用该端口app.run(port=PORT)。我可以在try catch块中执行此操作,以便在Address already in use出现错误时可以尝试下一个端口。


问题答案:

你无法轻易获得Flask使用的服务器套接字,因为它隐藏在标准库的内部(Flask使用Werkzeug,其开发服务器基于stdlib BaseHTTPServer)。

但是,你可以自己创建一个临时端口,然后关闭创建它的套接字,然后自己使用该端口。例如:

# hello.py
from flask import Flask, request
import socket

app = Flask(__name__)

@app.route('/')
def hello():
    return 'Hello, world! running on %s' % request.host

if __name__ == '__main__':
    sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    sock.bind(('localhost', 0))
    port = sock.getsockname()[1]
    sock.close()
    app.run(port=port)

将为你提供要使用的端口号。运行示例:

$ python hello.py 
* Running on http://127.0.0.1:34447/

并且,在浏览到http:// localhost:34447 /时,我看到了

Hello, world! running on localhost:34447

在我的浏览器中。

当然,如果在关闭套接字然后再用Flask用该端口打开套接字之间使用其他端口,则会收到“正在使用地址”错误,但是你可以在环境中使用此技术。



 类似资料:
  • 本文向大家介绍如何在JavaScript中获取当前页面的Internet主机端口号?,包括了如何在JavaScript中获取当前页面的Internet主机端口号?的使用技巧和注意事项,需要的朋友参考一下 要在JavaScript中获取当前页面的Internet主机端口号,请使用window.location.port属性。 示例 您可以尝试运行以下代码来获取当前页面上的Internet主机端口数。

  • 问题内容: 在Flask中,当我为同一功能使用多个路由时,如何知道当前使用的是哪个路由? 例如: 我怎么知道,现在我被称为使用或? 更新 我知道我不想使用它,因为请求可能相当复杂,并且我想在函数中重复路由逻辑。我认为最好的解决方案。 问题答案: 检查触发你的视图的路线的最“轻松”方法是request.url_rule。

  • nuxt3如何在服务端获取当前域名,服务端无法使用location去获取 使用useRequestHeaders获取的空对象

  • 问题内容: 我用来发出几个http请求(显然)。现在,我需要发出请求并从最终URL中提取一些查询字符串(存在重定向)。 因此,问题是如何找到URL(如果重定向了客户端,则为最终URL)?Response中没有这样的字段。 请注意,我不需要停止重定向…仅在请求后查找URL是什么 问题答案: 您将回调添加到 然后,您可以在发生新请求时对其进行检查。只要确保设置某种限制来防止重定向循环(如文档中所述,默

  • 问题内容: 我需要使用Open ::URI从我的应用程序中下载一个csv文件,并为此做一个完全限定的URI。那么,在我的cucumber脚本中获取主机(更重要的是PORT)的最佳方法是什么? 注意我正在使用cucumber和selenium 问题答案: 您可以设置将用于生成应用程序服务器的端口

  • 问题内容: 获取当前时间的模块/方法是什么? 问题答案: 采用: 而只是时间: 有关更多信息,请参见文档。 要保存输入,可以datetime从datetime模块中导入对象: 然后datetime.从以上所有位置移除引线。