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

名称从“应用程序”更改为Gunicorn后找不到应用程序

年良骏
2023-03-14
问题内容

我曾经gunicorn --workers 3 wsgi运行过Flask应用。如果将变量更改applicationmyapp,则Gunicorn给出错误AppImportError: Failed to find application: 'wsgi'。为什么会出现此错误,我该如何解决?

myproject.py:

from flask import Flask

myapp = Flask(__name__)

@myapp.route("/")
def hello():
    return 'Test!'

if __name__ == "__main__":
    myapp.run(host='0.0.0.0')

wsgi.py:

from myproject import myapp

if __name__ == "__main__":
    myapp.run()

问题答案:

Gunicorn(和大多数WSGI服务器)默认application在你指向的模块中查找可调用的名称。添加别名from myproject import myapp as applicationapplication = myapp将使Gunicorn再次发现可调用对象

但是,wsgi.py不需要文件或别名,Gunicorn可以直接指向实际模块并可以调用。

gunicorn myproject:myapp --workers 16
# equivalent to "from myproject import myapp as application"

Gunicorn还可以调用应用程序工厂(可选地带参数)来获取应用程序对象。(这在Gunicorn 20中暂时不起作用,但在20.0.1中又添加了。)

gunicorn 'myproject.app:create_app("production")' --workers 16
# equivalent to:
# from myproject.app import create_app
# application = create_app("production")

对于不支持调用工厂的WSGI服务器,或者对于其他更复杂的导入,wsgi.py则需要一个文件来进行设置。

from myproject.app import create_app
app = create_app("production")
gunicorn wsgi:app --workers 16


 类似资料:
  • 我刚刚完成了我的第一个android应用程序,并生成了一个apk文件在我的手机上测试。然后我意识到我在制作项目时留下了默认的“My Application”名称。所以安装的应用程序名为“我的应用程序”。如何更改应用程序的名称?

  • 在图片中,我想更改应用程序名称仅"应用程序"强文本 我可以更改或更新部署的应用程序名称而不停止托管服务器? 一段时间后的其他信息。如果您想在weblogic wlst控制台中更改应用程序名称,它会接收错误消息。 这表明weblogic Application ationName属性是只读属性。

  • 我只是按照这个页面的说明做了一个Flutter app,我在谷歌上搜索了如何更改应用程序的名称,找到了这个答案。但是我不能从清单文件中更改应用程序的名称。最初是。我将其更改为,它给出了错误 如何重置此错误并更改名称?

  • 我尝试这样更改我的AndroidManifest: 但现在这个名字到处都是(在主页和应用程序的标题上)“[T]ime[T]racking[M]anager”。我怎么能给他们起不同的名字呢?

  • 我试着从中进行更改,但它得到了更改,但Flutter提供了一种方法来实现这一点吗?

  • 我想知道一个应用程序的包名,我只知道那个应用程序的应用程序名。假设我想知道一个电子邮件应用程序的包名,只是它的名字,然后如何得到它 我只知道应用程序名。 这是代码,以获得所有的应用程序的包名称,但我需要知道特定的应用程序。