Подтвердить что ты не робот

Гуникорн с флягой с использованием неправильного Python

Я пытаюсь загрузить приложение Flask на сервере Gunicorn. Помещая документы двух инструментов вместе, а также поиск вокруг SO, это то, что у меня есть до сих пор... но это не совсем работает.

app.py

from flask import Flask, render_template
from flask.ext.sqlalchemy import SQLAlchemy
from werkzeug.contrib.fixers import ProxyFix

app = Flask(__name__)
app.wsgi_app = ProxyFix(app.wsgi_app)
db = SQLAlchemy(app)

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

что я бежал:

В том же каталоге, что и app.py,

gunicorn app:app

Даже начиная этот маленький, я что-то пропустил. Сообщение об ошибке не очень полезно:

2013-09-12 20:13:07 [11461] [INFO] Начало стрельбы из лука 0.14.5
2013-09-12 20:13:07 [11461] [INFO] Слушание: http://127.0.0.1:8000 (11461)
2013-09-12 20:13:07 [11461] [INFO] Использование рабочего: синхронизация
2013-09-12 20:13:07 [11528] [INFO] Загружающий рабочий с pid: 11528
2013-09-12 20:13:07 [11528] [INFO] Выход рабочего (pid: 11528)
2013-09-12 20:13:08 [11461] [INFO] Выключение: Мастер
2013-09-12 20:13:08 [11461] [INFO] Причина: Работник не смог загрузиться.

Кстати, я запускаю это в системе Debian Linux. Большое спасибо за вашу помощь!

Обновить

После включения отладки я получил несколько более поучительных сообщений об ошибках. Это очень частая проблема: ImportError: No module named flask. Обычно я получаю такую ​​ошибку, когда я не использую свой virtualenv, но я есть. И при ближайшем рассмотрении Gunicorn, похоже, использует другую версию Python, чем использует мой virtualenv, то есть Python3. Итак... мой особый питон, похоже, не привыкает. Как исправить это и сообщить Gunicorn использовать правильный Python?

4b9b3361

Ответ 1

Утилита gunicorn может быть исчерпана из системного пути, а не вашего виртуального.

Удостоверьтесь, что pip install gunicorn в virtualenv.

Здесь задержка замораживания виртуального сервера я для запуска вашего приложения:

(so_2)20:38:25 ~/code/tmp/flask_so$ pip freeze
Flask==0.10.1
Flask-SQLAlchemy==1.0
Jinja2==2.7.1
MarkupSafe==0.18
SQLAlchemy==0.8.2
Werkzeug==0.9.4
gunicorn==18.0
itsdangerous==0.23
wsgiref==0.1.2

В действительности, я использовал только эти pip install s:

$ pip install flask
$ pip install gunicorn
$ pip install Flask-SQLAlchemy

Ответ 2

У меня та же проблема, что и у вас. Проблема в том, что пушкирь по какой-то причине загружает окружающую среду за пределы вашего виртуального env. Я решил, удалив пакет gunicorn вне виртуальной среды;

(env) $ deactivate
$ sudo pip uninstall gunicorn

Итак, вы вернетесь к своему env и попробуйте бежать. В моей папке env я набрал:

$ source env/bin/activate
(env) $ pip install gunicorn
(env) $ gunicorn server:app
2013-10-19 20:40:56 [11923] [INFO] Starting gunicorn 18.0
2013-10-19 20:40:56 [11923] [INFO] Listening at: http://127.0.0.1:8000 (11923)
2013-10-19 20:40:56 [11923] [INFO] Using worker: sync
2013-10-19 20:40:56 [11926] [INFO] Booting worker with pid: 11926

Ответ 3

Gunicorn может быть установлен в нескольких местах в вашей системе. Он может присутствовать в

  • Путь Python по умолчанию для ОС
  • Путь к Anaconda Python

По умолчанию при указании

gunicorn -w 4 -b 127.0.0.1:5000 flaskApp: приложение

Вы ссылаетесь на операционную систему по умолчанию Python, где в том же пакете флажков пакетов не установлено, приводит к ошибке. Лучше укажите, к какому оружию вы стремитесь, указав правильный путь к пушке-стрельбе.

/home/sunil/anaconda2/bin/gunicorn -w 4 -b 127.0.0.1:5000 flaskApp: приложение