LINUX.ORG.RU

Туплю с uWSGI

 ,


0

1

Имеется маленький питоновский скрипт, ранее без проблем выполнявшийся через FastCGI + Apache. Пришлось переехать на Nginx + uWSGI. Переделал print() на return []. Вроде бы всё работает, кроме одной фигни: при сабмите формы результат работы скрипта выводится под результатами предыдущих запросов (!). То есть скрипт выводит табличку, при следующем запросе он выводит новую табличку под старой, потом при следующем – новую под этими двумя, т д. Можно зайти из другого браузера, неважно, тот же эффект. И так до рестарта uwsgi.service. Это нормальное поведение с учётом того, что uwsgi постоянно запущен? как от этого избавиться? Понятно, что я какую-то явную глупость сделал, не пойму где.

ps: сам дурак, result = [] надо было делать не в начале модуля, который выполняется только раз при запуске сервиса.

Кусок nginx.ini:

	location ~ \.py$ {
		include	uwsgi_params;
		uwsgi_pass unix:/var/www/wsgi/wsgi.sock;
		}

uwsgi.ini:

[uwsgi]
module = tables:app
pythonpath = /var/www/wsgi

master = false
processes = 1
uid = _nginx
gid = _webserver

socket = /var/www/wsgi/wsgi.sock
chmod-socket = 664
vacuum = true
logto = /var/log/uwsgi.log
die-on-term = true

★★

Последнее исправление: olegkrutov (всего исправлений: 3)

С другим wsgi-сервером воспроизводится? Вангую, что проблема в самом скрипте и не имеет отношения ни к nginx, ни (скорее всего) к uWSGI

annulen ★★★★★
()

CGI сприпт? А их сейчас хоть кто-то поддерживает? Если он маленький, то может проще переписать?

emorozov
()

Немного телепатии масштабов википедии:

А ты кроме return (вместо которого лучше использовать yield) start_response вызвал?

Scondo
()
Ответ на: комментарий от Scondo

Ну да. Вот начало app, прописанного в конфиге uwsgi:

def app(environ, start_response):
    start_response('200 OK', [('Content-type', 'text/html; charset=utf-8')])

Дальше всё добавляю к списку, возвращаю список. yield хорошая идея, как я понимаю, чтоб получать вывод по мере его образования, но там не столько того вывода.

olegkrutov ★★
() автор топика
Последнее исправление: olegkrutov (всего исправлений: 1)
Ответ на: комментарий от annulen

Приложение на питоне. Там просто соглашения по вызову и всё, что есть «голый wsgi»?

olegkrutov ★★
() автор топика
Последнее исправление: olegkrutov (всего исправлений: 1)

Проблема в твоем питон аппе. Инфа 146%

Чтобы проверить - запусти тупо в консоли. А потом в цикле из питона.

kindof
()
Ответ на: комментарий от kindof

Всё так. Я просто не там создавал список, перенёс куда надо и всё заверте…

olegkrutov ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.