gpt4 book ai didi

python - Docker+Gunicorn+Flask,我不明白为什么我的设置不起作用

转载 作者:行者123 更新时间:2023-12-02 20:47:40 25 4
gpt4 key购买 nike

我正在尝试使用 flask 构建一个简单的应用程序,并且我决定也使用 gunicorn 和 docker。

目前我有这个配置:

> app
> myapp
__init__.py
index.html
docker-compose.yml
Dockerfile

我的 docker-compose.yml :
version: '2'
services:
web:
build: .
volumes:
- .:/app
command: /usr/local/bin/gunicorn -b :8000 myapp:app
working_dir: /app

我的 __init__.py :
import os

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def home():
return render_template('index.html')

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

这个最小配置有效,我可以访问我的应用程序并获取我的索引页面。

我不喜欢在 __init__.py 中创建我的应用程序。所以我想将应用程序创建移到 app.py 中文件。

新结构将是:
> app
> myapp
__init__.py
app.py
index.html
docker-compose.yml
Dockerfile
app.py会有旧的 __init__.py的内容文件和新的 __init__.py文件将是空的。

这行不通。我收到一个错误

Failed to find application: 'myapp'



我不明白为什么。

对此有任何想法吗?

最佳答案

在第一个配置中,您的 Flask 应用程序直接位于包 myapp 中。 ;移动后,它位于模块 myapp.app 中.

unicorn expects应用程序指定为module_name:variable_name ,有点像 from module_name import variable_name .

选项一:指定正确的模块路径:

/usr/local/bin/gunicorn -b :8000 myapp.app:app

选项二:将应用添加回 myapp .在 myapp/__init__.py , 添加
from .app import app

请注意,如果变量和模块共享名称,则模块将被掩盖(这不是一件好事,尽管也不是关键)。

关于python - Docker+Gunicorn+Flask,我不明白为什么我的设置不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49219050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com