Найти - Пользователи
Полная версия: Flask, Error 500, render_template, uwsgi
Начало » Web » Flask, Error 500, render_template, uwsgi
1
likin
Доброго дня.

Провожу перемещение проекта Flask на рабочий сервер nginx+uswgi.
Маршрутизация работает. При вызове render_template получаю 500 ошибку.

Вот мой конфиг uwsgi

[uwsgi]
plugins = python,http
socket = /var/www/mymobile/tmp/mymobile.sock
virtualenv = /var/www/mymobile/virtualenv/
pythonpath = /var/www/mymobile/app/
module = app:app
processes = 4
threads = 2
stats = 127.0.0.1:9191

Посмотрите свежим взглядом. Что не так? В логах пусто. nginx пустой лог - наверное где …, а лог wsgi ошибок не показывает.

Спасибо.
s0rg
Где конфиг nginx?
Почему именно при render_template, как вы это выяснили?
Правильно ли прописанны пути и права на них?
Какие права на /var/www/mymobile/tmp/mymobile.sock?
Проверьте настройки nginx на придмет логов - он _должен_ писать почему именно (и от кого) вам прилетает 500
likin
Похоже, что UWSGI не понимает некоторые установки. Об этом явно не говорит.
К примеру: изменить файл логов не получилось.

NGINX
Config:
upstream mymobile_serv {
    server unix:/var/www/mymobile/tmp/mymobile.sock;
}
server {
    listen 80;
    server_name mymobile.local;
    access_log /var/www/mymobile/logs/nginx-access.log;
    error_log  /var/www/mymobile/logs/nginx-error.log  warn;
    location / {
        uwsgi_pass mymobile_serv;
        include uwsgi_params;
    }
    location /static/ {
        root /var/www/mymobile/app/static/;
    }
}

Error log: Empty.
Access log:
http://pastebin.com/btvcDLQD

UWSGI
Config:
[uwsgi]
base = /var/www/mymobile/
plugins = python
logto = %(base)logs/uwsgi.log
socket = %(base)tmp/mymobile.sock
virtualenv = %(base)virtualenv/
pythonpath = %(base)app/
module = app:app
uid = viktor
gid = viktor

Log:
http://pastebin.com/QPmB1zQi


Спасибо.
likin
Может быть попробывать Gunicorn.

Или мне это не поможет? :)
s0rg
у вас странный конфиг:
/nginx/sites-enabled/my_site.conf:
server {
  listen 80;
  root /path/to/my_app;
  location / {
    try_files $uri @uwsgi;
  }
  location @uwsgi {
    include uwsgi_params;
    uwsgi_pass unix:/var/run/my_app.sock;
  }
}

/uwsgi/apps-enabled/my_app.ini:
[uwsgi]
no-orphans    = true
vacuum        = true
master        = true
processes     = 4
chmod-socket  = 664
chown-socket  = www-data:www-data
socket        = /var/run/my_app.sock
py-autoreload = 1
virtualenv    = /path/to/env
chdir         = /path/to/app
module        = app
callable      = app
likin
Похоже это неправильно настроен фласк.

Работает:
@app.route("/upload", methods=["GET", "POST"])
def upload():
    return 'upload page'
    return render_template('upload.html')

Не работает:
@app.route("/upload", methods=["GET", "POST"])
def upload():
    return render_template('upload.html')
likin
Проблема была простой.
Не работал как следует debug режим…

...
app.config['ASSETS_DEBUG'] = True
app.debug = True
if __name__ == "__main__":
app.config = True
app.run(debug=True)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB