我正在创建一个简单的flaskapp,我将在heroku上部署,第一次在heroku上部署python应用程序,据说我是gunicorn的新手。

附加说明:使用虚拟环境。

烧瓶Flask的版本== 0.10.1

gunicorn == 19.3.0

使用'python run.py' 有效

使用'foreman start'我收到以下错误

16:35:44 web.1  | started with pid 4047
16:35:44 web.1  | [2015-03-30 16:35:44 +0000] [4047] [INFO] Starting gunicorn 19.3.0
16:35:44 web.1  | [2015-03-30 16:35:44 +0000] [4047] [INFO] Listening at: http://0.0.0.0:5000 (4047)
16:35:44 web.1  | [2015-03-30 16:35:44 +0000] [4047] [INFO] Using worker: sync
16:35:44 web.1  | [2015-03-30 16:35:44 +0000] [4053] [INFO] Booting worker with pid: 4053
16:35:44 web.1  |  * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
16:35:44 web.1  | [2015-03-30 16:35:44 +0000] [4053] [ERROR] Exception in worker process:
16:35:44 web.1  | Traceback (most recent call last):
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 507, in spawn_worker
16:35:44 web.1  |     worker.init_process()
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 118, in init_process
16:35:44 web.1  |     self.wsgi = self.app.wsgi()
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
16:35:44 web.1  |     self.callable = self.load()
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
16:35:44 web.1  |     return self.load_wsgiapp()
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
16:35:44 web.1  |     return util.import_app(self.app_uri)
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/gunicorn/util.py", line 355, in import_app
16:35:44 web.1  |     __import__(module)
16:35:44 web.1  |   File "/home/adminuser/Desktop/Github/SoftwareEng/barcodeServer/SoftwareEng/run.py", line 3, in <module>
16:35:44 web.1  |     flaskapp.run(debug=True)
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/flask/app.py", line 772, in run
16:35:44 web.1  |     run_simple(host, port, self, **options)
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/werkzeug/serving.py", line 617, in run_simple
16:35:44 web.1  |     test_socket.bind((hostname, port))
16:35:44 web.1  |   File "/usr/lib/python2.7/socket.py", line 224, in meth
16:35:44 web.1  |     return getattr(self._sock,name)(*args)
16:35:44 web.1  | error: [Errno 98] Address already in use
16:35:44 web.1  | Traceback (most recent call last):
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 507, in spawn_worker
16:35:44 web.1  |     worker.init_process()
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 118, in init_process
16:35:44 web.1  |     self.wsgi = self.app.wsgi()
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/gunicorn/app/base.py", line 67, in wsgi
16:35:44 web.1  |     self.callable = self.load()
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
16:35:44 web.1  |     return self.load_wsgiapp()
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
16:35:44 web.1  |     return util.import_app(self.app_uri)
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/gunicorn/util.py", line 355, in import_app
16:35:44 web.1  |     __import__(module)
16:35:44 web.1  |   File "/home/adminuser/Desktop/Github/SoftwareEng/barcodeServer/SoftwareEng/run.py", line 3, in <module>
16:35:44 web.1  |     flaskapp.run(debug=True)
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/flask/app.py", line 772, in run
16:35:44 web.1  |     run_simple(host, port, self, **options)
16:35:44 web.1  |   File "/home/adminuser/Desktop/test/SoftwareEng/local/lib/python2.7/site-packages/werkzeug/serving.py", line 617, in run_simple
16:35:44 web.1  |     test_socket.bind((hostname, port))
16:35:44 web.1  |   File "/usr/lib/python2.7/socket.py", line 224, in meth
16:35:44 web.1  |     return getattr(self._sock,name)(*args)
16:35:44 web.1  | error: [Errno 98] Address already in use
16:35:44 web.1  | [2015-03-30 16:35:44 +0000] [4053] [INFO] Worker exiting (pid: 4053)
16:35:44 web.1  | [2015-03-30 16:35:44 +0000] [4047] [INFO] Shutting down: Master
16:35:44 web.1  | [2015-03-30 16:35:44 +0000] [4047] [INFO] Reason: Worker failed to boot.
16:35:44 web.1  | exited with code 3
16:35:44 system | sending SIGTERM to all processes

Procfile

web: gunicorn run:flaskapp --log-file=-

文件结构

/
 ...
 run.py
 Procfile
 app/
    __init__.py
    routes.py
    ...

run.py

from app import flaskapp
flaskapp.run(debug=True)

__init__.py

from flask import Flask

flaskapp = Flask(__name__)
from app import routes

routes.py

from app import flaskapp
from flask import render_template
import dbwrapper

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

从我读的gunicorn允许创建多个线程,这让我认为线程正在尝试访问抛出已使用错误的同一端口。 但是我不知道如何解决它,任何帮助表示赞赏。

#1楼 票数:10 已采纳

看起来你正在调用run:flaskapp而不是app:flaskapp和run.py试图打开另一个实例。

16:35:44 web.1  |   File "/home/adminuser/Desktop/Github/SoftwareEng/barcodeServer/SoftwareEng/run.py", line 3, in <module>

首先,始终封装运行:

if __name__ == '__main__':
    flaskapp.run(debug=True)

并更新您的procfile以调用app.__init__.py

web: gunicorn app:flaskapp --log-file=-

PS:我不知道procfile或工头是什么 - heroku的东西?

  ask by steff_bdh translate from so

未解决问题?本站智能推荐:

2回复

OSError: [Errno 98] 地址已被使用 - Heroku

我正在尝试将项目https://github.com/kc1/flask-huey-example部署到 heroku 以允许使用任务队列和烧瓶。 项目布局如上。 您还可以查看我更新的 github 存储库。 该项目在 Windows 本地运行没有问题(本地未使用 gunicorn)。 我的档
1回复

gunicorn导致heroku中的错误

我只是第一次将应用程序推送到heroku,但是在访问该页面时始终收到“应用程序错误”。我对heroku并不熟悉,在帮助/开发中心链接中似乎找不到任何参考。 去Heroku日志我得到这个: 我不确定这些都是什么意思。 但是我假设这与gunicorn连接有关? 有人可以帮忙指出问题
1回复

Heroku应用程序在本地运行,但得到H12超时错误(使用包)

类似的问题已被提出,但H12似乎是由许多事情引起的,这里没有一个答案适用。 我之前用heroku构建了python应用程序,但现在我正在使用Miguel Grinberg的Flask Mega-Tutorial的包结构,我无法弄清楚出了什么问题。 我的应用程序是python / Flas
1回复

如何使用Flask在Heroku中显示stdout日志?

在我的Python 3.7.1应用程序中,我正在使用Flask并将其部署到Heroku,并且除登录到Heroku控制台外,其他一切都工作正常。 我一直在寻找答案,并以为我找到了一些……但是,遗憾的是,它们最终并没有输出到Heroku Log Console。 当我在本地运行该应用程序时,使用
2回复

阻止IP地址访问Heroku上的Flask应用程序?

我有一个IP地址,我需要阻止我的网站。 在Heroku上运行Flask应用程序,我在服务器上每秒看到50个请求,这绝对不应该发生。 我熟悉在Apache服务器上使用htaccess,这里有类似的东西(Gunicorn服务器)吗?
4回复

heroku上的gunicorn导入错误

我不能用简单的烧瓶应用程序在heroku上运行gunicorn应用程序非常简单,这个app.py 当我切换到使用gunicorn它崩溃时,应用程序在heroku上烧瓶测试服务器正常工作: 我的requirements.txt: 我试过不同版本的gunicorn从0.13.
2回复

在Heroku上使用Gunicorn的Flask应用程序中,Flask会话不会持久存在

我正在使用Gunicorn作为Web服务器运行Flask应用程序。 整个项目部署到Heroku。 Procfile Flask会话在服务器端实现,只有会话ID存储在flask.session对象中。 每当我尝试登录时,我都会首先正确登录,然后重定向到起始站点(应该是用户站点)。
1回复

如何解决使用 Flask 在 Heroku 上部署模型后导致的应用程序错误?

该应用程序在本地计算机上完美运行,但在部署到 Heroku 后,当我尝试在浏览器中打开该应用程序时出现应用程序错误。 检查了日志文件并自己解决了一些小问题,但我现在不能再进一步了。 我在部署之前做了什么: pip 安装 gunicorn pip冻结>需求.txt 创建 pro