@89109983838

Flask-sqlalchemy вместо страниц An error occurred?

Доброе время суток!
Использую связку Freebsd 10, python34, nginx, uwsgi, supervisor, Flask
Столкнулся с такой проблемой:
В питон Веб приложении на Flask ИМЕННО при запросах к БД, на типа:
app.route('/setting/')
def setting():
    test = db.session.query(Setting).filter_by(group='setting').all()
    return redirect(url_for('index'), test = test)

Выдает ошибку в браузерах:
An error occurred.
Sorry, the page you are looking for is currently unavailable.


А в логах nginx:
2015/12/28 06:53:47 [error] 527#0: *66 upstream prematurely closed connection while reading response header from upstream, client: 192.168.137.1, server: 192.168.137.2, request: "GET /root/setting/ HTTP/1.1", upstream: "uwsgi://127.0.0.1:4242", host: "192.168.137.2"

Хотя при запуске через встроенный сервер Flask на 81 порт все работает замечательно, без вышеуказанных ошибок!!!
Конфиг приложения app:
import sys, os
# configuration
SRF_ENABLED = True
SECRET_KEY = '1234'
DEBUG = 'False'
DEBUG_TB_INTERCEPT_REDIRECTS = False
# database
basedir = os.path.abspath(os.path.dirname(__file__))
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'app.db')
SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, 'db_repository')
SQLALCHEMY_ECHO = False
SQLALCHEMY_TRACK_MODIFICATIONS = False


Конфиг nginx:

user  www;
worker_processes  1;

events {
    worker_connections  1024;
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    proxy_buffers 8 32k;
    proxy_buffer_size 64k;

    #access_log  logs/access.log  main;

    sendfile        on;
    client_max_body_size 20M;
    #tcp_nopush     on;

    #keepalive_timeout  0;
    keepalive_timeout  65;

    #gzip  on;

    server {
	
		listen       80;
		server_name  192.168.137.2;

		location / { try_files $uri @app; }
		location @app {
			uwsgi_pass 127.0.0.1:4242;
			include uwsgi_params;
			uwsgi_buffer_size 32k;   # Менял на значения 64 не помогло!!!
			uwsgi_buffers 8 32k;      # Менял на значения 64 не помогло!!!
			uwsgi_busy_buffers_size 32k;   # Менял на значения 64 не помогло!!!
		}

		error_page   500 502 503 504  /50x.html;
			location = /50x.html {
				root   /usr/local/www/nginx-dist;
		}
	}		
}


В чем може быть причина!
upstream prematurely closed connection while reading response header from upstream --- уже изучил, скорее всего не с этим связано. тем более данная ошибка только на запросах к БД выскальзывает и только в связке с ngnix. Дополню еще что и с пустой база и с записями - все те же глюки!!
Д

Подскажите что за проблема с sqlalchemy?!

#################### РЕШЕНИЕ ########################

Ответ оказался вполне простым:
uwsgi - запускается от "лица" www, а база данных создавалась от другого пользователя user!
соответственно: Flask не имел прав работать с базой данных и глючил- отрубаясь от uwsgi, ну а на DEV сервере естественно все работало т.к. права там одинаковы скажем так!
  • Вопрос задан
  • 262 просмотра
Решения вопроса 1
@89109983838 Автор вопроса
Вообщем настроил uwsgi на работу по 0.0.0.0:8000 (добавив protocol=http)
В браузере как и раньше открываются страницы только те что генерируются без обращения в Базе данных!

А страницы с образением к базе (по типу как примере выше) выдает
Соединение было сброшено
Во время загрузки страницы соединение с сервером было сброшено.


################################# РЕШЕНИЕ##############
Ответ оказался вполне простым:
uwsgi - запускается от "лица" www, а база данных создавалась от другого пользователя user!
соответственно: Flask не имел прав работать с базой данных и глючил- отрубаясь от uwsgi, ну а на DEV сервере естественно все работало т.к. права там одинаковы скажем так!

надо логирование прикрутить к этому месту может сплывет что!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы