2016-09-25 11 views
1

У меня есть флеш-приложение, которое использует Flask-Login для аутентификации. Все работает нормально локально, как с использованием фляжки, встроенной в веб-сервер, так и с помощью пушки, выполняемых локально. Но когда это на геройку, это ошибочно, иногда я вхожу в систему, а иногда и нет. Когда я успешно выполнил вход в течение нескольких секунд, моя сессия просто уничтожается и автоматически выйдет из системы. Это должно произойти, когда пользователь вышел из системы.Логин: Пароль: Запомнить меня Забыли пароль? Забыли логин? Регистрация Неверное имя пользователя:

Следующий фрагмент кода на мой взгляд, может быть уместным:

@app.before_request 
def before_request(): 
    g.user = current_user 

# I have index (/) and other views (/new) decorated with @login_required 

я мог бы быть аналогичные проблемы with this. На него еще нет ответов, и из того, что я читал из комментариев, автор просто запускал свое приложение с python app.py. То есть с помощью встроенного веб-сервера фляшки. Однако я не могу повторить его обходное решение, так как запуск app.run(host='0.0.0.0') запускает приложение в порту 5000, и я не могу установить port=80 из-за разрешения.

Я не вижу ничего полезного в журналах, за исключением того, что он не аутентифицируется, даже если нужно.

Часть из журналов, когда я получил проверку подлинности и пытались перейти к /new и / попеременно до тех пор, пока не регистрирует меня:

2016-09-25T06:57:53.052378+00:00 app[web.1]: authenticated - IP:10.179.239.229 
2016-09-25T06:57:53.455145+00:00 heroku[router]: at=info method=GET path="/" host=testdep0.herokuapp.com request_id=c7c8f4c9-b003-446e-92d8-af0a81985e72 fwd="124.100.201.61" dyno=web.1 connect=0ms service=116ms status=200 bytes=6526 
2016-09-25T06:58:11.415837+00:00 heroku[router]: at=info method=GET path="/new" host=testdep0.herokuapp.com request_id=ae5e4e29-0345-4a09-90c4-36fb64785079 fwd="124.100.201.61" dyno=web.1 connect=0ms service=7ms status=200 bytes=2552 
2016-09-25T06:58:13.543098+00:00 heroku[router]: at=info method=GET path="/" host=testdep0.herokuapp.com request_id=47696ab9-57b9-4f20-810a-66033e3e9e50 fwd="124.100.201.61" dyno=web.1 connect=0ms service=8ms status=200 bytes=5982 
2016-09-25T06:58:18.037766+00:00 heroku[router]: at=info method=GET path="/new" host=testdep0.herokuapp.com request_id=98912601-6342-4d71-a106-26056e4bbb21 fwd="124.100.201.61" dyno=web.1 connect=0ms service=3ms status=200 bytes=2552 
2016-09-25T06:58:19.619369+00:00 heroku[router]: at=info method=GET path="/" host=testdep0.herokuapp.com request_id=2b04d31f-93a2-4653-83a4-f95ca9b97149 fwd="124.100.201.61" dyno=web.1 connect=0ms service=3ms status=302 bytes=640 
2016-09-25T06:58:19.953910+00:00 heroku[router]: at=info method=GET path="/login?next=%2F" host=testdep0.herokuapp.com request_id=e80d15cd-e9ad-45ff-ae54-e156412fe4ff fwd="124.100.201.61" dyno=web.1 connect=0ms service=3ms status=200 bytes=2793 

PROCFILE:

web: gunicorn app:app

ответ

1

Проблема была решена добавив опцию --preload к стрельбе. Я не совсем уверен, как это решило проблему и было бы полезно, если кто-нибудь сможет объяснить.

Обновлено PROCFILE:

web: gunicorn app:app --preload

0

Вслед за тем, что крато сказал (который получил его на работу, на всех), мое приложение по-прежнему не работает отлично. Даже если он войдет в систему в первый раз, я смогу продолжать освежать и в конечном итоге выйдет из системы. Таким образом, после прочтения this article я набор gunicorn использовать только один работник, как так:

Веб: gunicorn -w 1: приложение --preload

, который, казалось, сделать трюк.