Python 发布正在运行的gunicorn以服务flask应用程序
目标:让gunicorn提供烧瓶应用程序 尝试:运行以下命令:Python 发布正在运行的gunicorn以服务flask应用程序,python,flask,Python,Flask,目标:让gunicorn提供烧瓶应用程序 尝试:运行以下命令: gunicorn [the name of my project folder]:flaskr 输出: [2019-08-26 15:04:32 +0000] [16063] [INFO] Starting gunicorn 19.9.0 [2019-08-26 15:04:32 +0000] [16063] [INFO] Listening at: http://127.0.0.1:8000 (16063) [2019-08-2
gunicorn [the name of my project folder]:flaskr
输出:
[2019-08-26 15:04:32 +0000] [16063] [INFO] Starting gunicorn 19.9.0
[2019-08-26 15:04:32 +0000] [16063] [INFO] Listening at: http://127.0.0.1:8000 (16063)
[2019-08-26 15:04:32 +0000] [16063] [INFO] Using worker: sync
[2019-08-26 15:04:32 +0000] [16067] [INFO] Booting worker with pid: 16067
[2019-08-26 15:04:32 +0000] [16067] [ERROR] Exception in worker process
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 129, in init_process
self.load_wsgi()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 138, in load_wsgi
self.wsgi = self.app.wsgi()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load
return self.load_wsgiapp()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
return util.import_app(self.app_uri)
File "/usr/local/lib/python2.7/dist-packages/gunicorn/util.py", line 350, in import_app
__import__(module)
ImportError: No module named [the name of my project folder]
[2019-08-26 15:04:32 +0000] [16067] [INFO] Worker exiting (pid: 16067)
[2019-08-26 15:04:32 +0000] [16063] [INFO] Shutting down: Master
[2019-08-26 15:04:32 +0000] [16063] [INFO] Reason: Worker failed to boot.
我已将此项目部署到我的web服务器。在我用来管理此Web服务器的帐户的主目录中,我有一个项目文件夹,因为我在工作站上处理它。以下是从项目文件夹中运行的树输出:
├── flaskr
│ ├── auth.py
│ ├── build
│ ├── db.py
│ ├── db.pyc
│ ├── dist
│ ├── flaskr.egg-info
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── MANIFEST.in
│ ├── old
│ ├── __pycache__
│ ├── schema.sql
│ ├── setup.py
│ ├── static
│ └── templates
├── instance
│ └── flaskr.sqlite
├── keys.csv
├── tests
├── venv
│ ├── bin
│ ├── include
│ ├── lib
│ ├── lib64
│ ├── pyvenv.cfg
│ └── share
└── venv.sh
pip install -e
我已经在venv中安装了gunicorn。我还导出了环境变量,如flask教程中所示
我还配置了manifest.ini和setup.py以使程序可安装。我已尝试从项目文件夹中运行以下程序进行安装:
├── flaskr
│ ├── auth.py
│ ├── build
│ ├── db.py
│ ├── db.pyc
│ ├── dist
│ ├── flaskr.egg-info
│ ├── __init__.py
│ ├── __init__.pyc
│ ├── MANIFEST.in
│ ├── old
│ ├── __pycache__
│ ├── schema.sql
│ ├── setup.py
│ ├── static
│ └── templates
├── instance
│ └── flaskr.sqlite
├── keys.csv
├── tests
├── venv
│ ├── bin
│ ├── include
│ ├── lib
│ ├── lib64
│ ├── pyvenv.cfg
│ └── share
└── venv.sh
pip install -e
我得到以下输出:
Usage:
pip install [options] <requirement specifier> [package-index-options] ...
pip install [options] -r <requirements file> [package-index-options] ...
pip install [options] [-e] <vcs project url> ...
pip install [options] [-e] <local project path> ...
pip install [options] <archive url/path> ...
-e option requires an argument
清单1.in:
include flaskr/schema.sql
graft flaskr/static
graft flaskr/templates
global-exclude *.pyc
编辑:8/26/19-下午1:30:
我试图通过另一篇文章来发现这个问题的原因,
运行此命令时:
gunicorn --bind 0.0.0.0:8000 wsgi
输出:
[2019-08-26 17:23:14 +0000] [17748] [INFO] Starting gunicorn 19.9.0
[2019-08-26 17:23:14 +0000] [17748] [INFO] Listening at: http://0.0.0.0:8000 (17748)
[2019-08-26 17:23:14 +0000] [17748] [INFO] Using worker: sync
[2019-08-26 17:23:14 +0000] [17752] [INFO] Booting worker with pid: 17752
[2019-08-26 17:23:15 +0000] [17752] [ERROR] Exception in worker process
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 129, in init_process
self.load_wsgi()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/workers/base.py", line 138, in load_wsgi
self.wsgi = self.app.wsgi()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 52, in load
return self.load_wsgiapp()
File "/usr/local/lib/python2.7/dist-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
return util.import_app(self.app_uri)
File "/usr/local/lib/python2.7/dist-packages/gunicorn/util.py", line 350, in import_app
__import__(module)
File "/home/[my user name]/[name of the project folder]/wsgi.py", line 1, in <module>
from [name of the project folder] import app
ImportError: No module named [name of the project folder]
[2019-08-26 17:23:15 +0000] [17752] [INFO] Worker exiting (pid: 17752)
[2019-08-26 17:23:15 +0000] [17748] [INFO] Shutting down: Master
[2019-08-26 17:23:15 +0000] [17748] [INFO] Reason: Worker failed to boot.
我怀疑我在wsgi.py中命名了错误的东西,请尝试在尝试导入应用程序实例之前将项目的路径插入sys.path wsgi.py: 导入操作系统 导入系统 directory=os.path.dirnameos.path.realpath\u文件__ app_directory=os.path.joindirectory,“flaskr” 如果目录不在sys.path中: sys.path.insert0,目录 如果app_目录不在sys.path中: sys.path.insert0,应用程序目录 从flaskr导入应用程序 如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu': app.run
请参阅显示我仍在努力解决此问题的编辑。无论是谁投票否决了此答案,请在我实施此解决方案之前解释为什么会这样做?