繁体   English   中英

Flask-MySQLdb无法与Gunicorn和Flask一起使用

[英]Flask-MySQLdb not working with gunicorn and flask

我在virtualenv中使用FlaskMySQL (针对osx10.13(x86_64)的版本14.14 Distrib 5.7.20)。 如果我使用命令python3 app.py运行以下app.py文件,则一切运行正常。 但是,如果我使用gunicorn通过命令gunicorn --bind 0.0.0.0:8000 app:app运行它,则会收到以下错误。 正确安装了MySQL和Flask-MySQLdb,还安装了mysqlclient。

[2018-04-03 19:54:42 +0530] [36173] [INFO] Starting gunicorn 19.7.1
[2018-04-03 19:54:42 +0530] [36173] [INFO] Listening at: http://0.0.0.0:8000 (36173)
[2018-04-03 19:54:42 +0530] [36173] [INFO] Using worker: sync
[2018-04-03 19:54:42 +0530] [36176] [INFO] Booting worker with pid: 36176
[2018-04-03 19:54:42 +0530] [36176] [ERROR] Exception in worker process
Traceback (most recent call last):
  File "/usr/local/lib/python3.6/site-packages/gunicorn/arbiter.py", line 578, in spawn_worker
    worker.init_process()
  File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/base.py", line 126, in init_process
    self.load_wsgi()
  File "/usr/local/lib/python3.6/site-packages/gunicorn/workers/base.py", line 135, in load_wsgi
    self.wsgi = self.app.wsgi()
  File "/usr/local/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
    self.callable = self.load()
  File "/usr/local/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 65, in load
    return self.load_wsgiapp()
  File "/usr/local/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load_wsgiapp
    return util.import_app(self.app_uri)
  File "/usr/local/lib/python3.6/site-packages/gunicorn/util.py", line 352, in import_app
    __import__(module)
  File "/Users/parthapratimneog/Documents/Work/cams-colored-cheque-recognition/colored_cheque_recognition/app.py", line 3, in <module>
    from flask_mysqldb import MySQL
ModuleNotFoundError: No module named 'flask_mysqldb'
[2018-04-03 19:54:42 +0530] [36176] [INFO] Worker exiting (pid: 36176)
[2018-04-03 19:54:43 +0530] [36173] [INFO] Shutting down: Master
[2018-04-03 19:54:43 +0530] [36173] [INFO] Reason: Worker failed to boot.

app.py

import os
from flask import Flask, request, redirect, url_for, send_from_directory, flash, jsonify
from flask_mysqldb import MySQL

from werkzeug.utils import secure_filename

from vision import Cheque

app = Flask(__name__)

ROOT_DIR = app.root_path
UPLOAD_FOLDER = os.path.join(ROOT_DIR, 'uploads')
ALLOWED_EXTENSIONS = {'png', 'jpg', 'jpeg', 'tif'}

app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
app.secret_key = 'asdlasj1283798uxXJOaisdj'
app.config['SESSION_TYPE'] = 'filesystem'

app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'root'
app.config['MYSQL_DB'] = 'dbname'

mysql = MySQL(app)

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


@app.route('/test',  methods=['GET'])
def test_mysql():
    cur = mysql.connection.cursor()
    cur.execute('''SELECT * FROM bank_details limit 2''')
    rv = cur.fetchall()
    return str(rv)

pip3 freeze output

click==6.7
cycler==0.10.0
decorator==4.2.1
Flask==0.12.2
Flask-MySQLdb==0.2.0
Flask-SQLAlchemy==2.3.2
gunicorn==19.7.1
imutils==0.4.6
itsdangerous==0.24
Jinja2==2.10
kiwisolver==1.0.1
MarkupSafe==1.0
matplotlib==2.2.2
mysqlclient==1.3.12
networkx==2.1
numpy==1.14.2
opencv-python==3.4.0.12
Pillow==5.0.0
PyMySQL==0.8.0
pyparsing==2.2.0
pytesseract==0.2.0
python-dateutil==2.7.2
pytz==2018.3
PyWavelets==0.5.2
scikit-image==0.13.1
scipy==1.0.1
six==1.11.0
SQLAlchemy==1.2.6
Werkzeug==0.14.1

基于gunicorn错误,似乎gunicorn没有在虚拟环境中使用python。 如果是正确的话,我该如何使用虚拟环境中的python使gunicorn使用。 如果没有,那可能是什么问题?

编辑

在PyCharm内部,我收到以下警告。 在此处输入图片说明

好的,我发现了问题。 说实话,这有点愚蠢。 以前的项目已经在全球范围内安装了gunicorn ,而且在virtualenv也以某种方式在全球gunicorn调用了gunicorn

因此,我卸载了全局gunicorn ,然后仅在我的virtualenv内部再次安装了它,它开始像魅力一样工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM