【问题标题】:Start function on run with Flask使用 Flask 运行时启动功能
【发布时间】:2018-11-23 17:01:15
【问题描述】:

我有一个烧瓶应用程序

@app.route("/hello")
def generater():
     return "hello world"

if __name__ == '__main__':
    app.run()

我的应用程序运行良好,但我想知道在编译代码时如何向http://127.0.0.1:5000/hello 发出请求

【问题讨论】:

  • “编译”是什么意思?
  • 当我执行命令 python hello.py 时,会发生的第一件事是它会转到 localhost:port/hello 并且它会返回 hello world 而我不必去网页并输入本地主机/你好

标签: python flask


【解决方案1】:

有很多方法可以做到这一点。您可以打开浏览器到该位置。您可以尝试@jimtodd 的回答,然后从另一个终端窗口卷曲端点。

要在代码中执行此操作,我猜这就是您想要的,Flask 为您提供了一些辅助方法。比如有:http://flask.pocoo.org/docs/1.0/api/#flask.Flask.before_first_request

你可以这样使用它:

def foo():
    pass

app.before_first_request(foo)

如果您想在运行时严格运行脚本,而不仅仅是在第一次请求之前,这个解决方案很好:Run code after flask application has started -- 我想您也可以用它来解决冷启动问题。

【讨论】:

  • 我不希望在我发出请求之前发生这种情况,当我运行 python hello.py 时,我希望它运行 foo 而无需打开浏览器并发出请求
  • 编辑了我的回复以解决这个问题
  • 这不是一个有效的正确答案..这在第一个请求之前执行。不是在开始之后。有什么想法吗?
【解决方案2】:

您可以在运行烧瓶应用时使用webbrowser 在网络浏览器中自动打开http://localhost:5000

import webbrowser
...

if __name__ == '__main__':
    webbrowser.open('http://localhost:5000')
    app.run()

【讨论】:

  • 这正是我想要的,现在只需要在服务器上尝试一下!谢谢
  • 这会打开一个浏览器,但如果您不想让它保持打开状态?只是 wget?
【解决方案3】:

您可以在命令提示符下执行此操作:

set FLASK_APP=hello.py
python -m flask run

你会看到.... 运行在http://127.0.0.1:5000

现在您可以在浏览器中检查输出。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-04
    • 1970-01-01
    • 2020-10-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多