如何将我的Flask_socketio应用程序正确推送到Heroku



我一直试图将我的Flask_socketio应用程序推送到Heroku,但Heroku无法通过Procfile找到我的应用程序,可能是因为我的包结构。如何重组目录?或者,我应该更改我的Procfile吗。提前谢谢。

我的目录结构:

|App
| |-templates
| |-main
| |-__init__.py
|app.py
|requirements.txt
|Procfile

应用程序py:

from app import create_app, socketio
app = create_app(debug=True)
if __name__ == "__main__":
socketio.run(app)

app/init.py:

from flask import Flask
from flask_socketio import SocketIO
socketio = SocketIO()
def create_app(debug=False):
"Create an application."
app = Flask(__name__)
app.debug = debug
app.config['SECRET_KEY'] = 'MRHBLR'
from .main import main 
app.register_blueprint(main)
socketio.init_app(app)
return app

程序文件:

web: gunicorn --worker-class eventlet -w 1 app:app

Heroku应用程序的日志:

2021-04-03T19:34:00.216344+00:00 app[web.1]: Failed to find attribute 'app' in 'app'.
2021-04-03T19:34:00.217370+00:00 app[web.1]: [2021-04-03 19:34:00 +0000] [10] [INFO] Worker exiting (pid: 10)
2021-04-03T19:34:00.248331+00:00 app[web.1]: [2021-04-03 19:34:00 +0000] [4] [WARNING] Worker with pid 10 was terminated due to signal 15
2021-04-03T19:34:00.345570+00:00 app[web.1]: [2021-04-03 19:34:00 +0000] [4] [INFO] Shutting down: Master
2021-04-03T19:34:00.345660+00:00 app[web.1]: [2021-04-03 19:34:00 +0000] [4] [INFO] Reason: App failed to load.

您的顶层中似乎有两个名为app的东西,对吧?您有app.py文件和app程序包。这是行不通的,试着重命名其中一个。例如,将app.py更改为myapp.py,然后在Gunicorn命令行中传递myapp:app

最新更新