【问题标题】:How to deploy my flask website to heroku without errors? [duplicate]如何将我的烧瓶网站部署到 heroku 而不会出错? [复制]
【发布时间】:2020-03-25 07:46:01
【问题描述】:

我使用flask后端创建了一个网站,一切都在本地运行良好,但是当我尝试在heroku上部署它时,我遇到了这些错误>> 这是我的 Procfile

web: gunicorn wsgi:app 

这是我的 wsgi 文件

from . import create_app
app = create_app()

这是我创建应用程序的代码>>

def create_app():

    app = Flask(__name__)

    if not os.getenv("DATABASE_URL"):
        raise RuntimeError("DATABASE_URL is not set")


    app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv("DATABASE_URL")
    app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False

    db = SQLAlchemy()
    db.init_app(app)

    app.config['SECRET_KEY'] = os.getenv("SECRET_KEY")

    login_manager = LoginManager()
    login_manager.init_app(app)


    @login_manager.user_loader
    def load_user(user_id):
        return User.query.get(int(user_id))

    return app

这是我从heroku日志中得到的

2020-03-25T07:37:09.102934+00:00 heroku[web.1]: State changed from starting to crashed
2020-03-25T07:37:08.996125+00:00 app[web.1]: Traceback (most recent call last):
2020-03-25T07:37:08.996155+00:00 app[web.1]:   File "/app/.heroku/python/bin/gunicorn", line 7, in <module>
2020-03-25T07:37:08.996318+00:00 app[web.1]:     from gunicorn.app.wsgiapp import run
2020-03-25T07:37:08.996337+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/wsgiapp.py", line 9, in <module>
2020-03-25T07:37:08.996465+00:00 app[web.1]:     from gunicorn.app.base import Application
2020-03-25T07:37:08.996496+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/app/base.py", line 11, in <module>
2020-03-25T07:37:08.996623+00:00 app[web.1]:     from gunicorn import util
2020-03-25T07:37:08.996654+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.7/site-packages/gunicorn/util.py", line 6, in <module>
2020-03-25T07:37:08.996775+00:00 app[web.1]:     import ctypes.util
2020-03-25T07:37:08.996798+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.7/ctypes/util.py", line 3, in <module>
2020-03-25T07:37:08.996912+00:00 app[web.1]:     import subprocess
2020-03-25T07:37:08.996934+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.7/subprocess.py", line 153, in <module>
2020-03-25T07:37:08.997239+00:00 app[web.1]:     import select
2020-03-25T07:37:08.997265+00:00 app[web.1]:   File "/app/select.py", line 3, in <module>
2020-03-25T07:37:08.997509+00:00 app[web.1]:     from flask import Flask,jsonify
2020-03-25T07:37:08.997541+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.7/site-packages/flask/__init__.py", line 16, in <module>
2020-03-25T07:37:08.997670+00:00 app[web.1]:     from werkzeug.exceptions import abort
2020-03-25T07:37:08.997694+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.7/site-packages/werkzeug/__init__.py", line 218, in <module>
2020-03-25T07:37:08.997974+00:00 app[web.1]:     from .serving import run_simple
2020-03-25T07:37:08.997999+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.7/site-packages/werkzeug/serving.py", line 41, in <module>
2020-03-25T07:37:08.998139+00:00 app[web.1]:     import socket
2020-03-25T07:37:08.998163+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.7/socket.py", line 52, in <module>
2020-03-25T07:37:08.998310+00:00 app[web.1]:     import os, sys, io, selectors
2020-03-25T07:37:08.998334+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.7/selectors.py", line 290, in <module>
2020-03-25T07:37:08.998523+00:00 app[web.1]:     class SelectSelector(_BaseSelectorImpl):
2020-03-25T07:37:08.998547+00:00 app[web.1]:   File "/app/.heroku/python/lib/python3.7/selectors.py", line 317, in SelectSelector
2020-03-25T07:37:08.998734+00:00 app[web.1]:     _select = select.select
2020-03-25T07:37:08.998772+00:00 app[web.1]: AttributeError: module 'select' has no attribute 'select'
2020-03-25T07:37:09.084647+00:00 heroku[web.1]: Process exited with status 1



2020-03-25T07:39:11.077962+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=bookreviews101.herokuapp.com request_id=a08f3517-e1e7-439a-bd77-f676d217cc8b fwd="197.165.201.207" dyno= connect= service= status=503 bytes= protocol=https
2020-03-25T07:39:11.531655+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=bookreviews101.herokuapp.com request_id=27ee6d2f-2e85-4cb3-87dd-9856f84285e6 fwd="197.165.201.207" dyno= connect= service= status=503 bytes= protocol=https

我想知道这个错误的原因是什么以及如何解决它

【问题讨论】:

  • 如果你锁定错误,你会发现我的文件没有路由所有路由都在 /lib 中>>> 这不是同一个错误??您会发现 /lib 和 selectors.py 缺少该属性!或者告诉我如何在我的情况下解决它天才

标签: python flask heroku


【解决方案1】:

这是我的 wsgi 文件

from . import create_app
app = create_app()

这是我创建应用程序的代码

def create_app():
...

您的应用代码所在的文件是什么。您的from . import create_app 看起来有问题。它可能没有导入该方法。

通常你应该在app.py中写这样的东西:

app = Flask(__name__)
@app.route("/")
def exampleroot():
     return {'message': 'just an example'}

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=os.environ.get('PORT', 80))

您可以使用python3 app.py 执行此操作。
您可以通过 gunicorn 通过 gunicorn app:app 运行 app.py。 (__name__ == "__main__" 将返回 False。)

【讨论】:

  • 它已导入并运行,因为我在应用程序文件中这样导入 >> 并且它正在工作 >> 一切都在本地运行良好?我有很多路线.. 一切都很好
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-17
  • 1970-01-01
  • 1970-01-01
  • 2015-09-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多