Я использую стандартную библиотеку Flask-Login для доступа к своему приложению. Время ожидания входа составляет 300 минут. На моей локальной машине эта библиотека работает нормально - я вхожу в приложение, делаю что-то и нажимаю «выйти» - все работает. Затем я «подталкиваю» свое приложение к героку и захожу. Я могу что-то сделать, но через 10-15 секунд сессия пропадает и мне приходится заново входить в систему.

Что за ошибка?

Я пытался решить проблему, но ничего не помогает. Мой план героки - "хобби / дев". Если у вас есть идеи, вы можете мне помочь?

#Init sessions 
Session(app) 
#Login manager 
loginmanager = LoginManager() ... ... 
# Call 'login required' function, when I need to protect my function: 
# View function for custom admin 
@app.route(def_route+'/', methods=['GET', 'POST']) 
@app.route("/", methods=['GET', 'POST']) 
@login_required 
def index(): 
   #try: 
   errorvar = 0 ...`

Программное обеспечение, которое я использую:

alembic==1.0.7
APScheduler==3.6.0
asn1crypto==0.24.0
Babel==2.6.0
blinker==1.4
certifi==2019.3.9
cffi==1.12.2
chardet==3.0.4
Click==7.0
cryptography==2.6.1
Flask==1.0.2
Flask-Admin==1.5.3
Flask-BabelEx==0.9.3
Flask-JWT==0.3.2
Flask-JWT-Extended==3.18.0
Flask-Login==0.4.1
Flask-LoginManager==1.1.6
Flask-Mail==0.9.1
Flask-Migrate==2.4.0
Flask-Principal==0.4.0
Flask-Script==2.0.6
Flask-Security==3.0.0
Flask-Session==0.3.1
Flask-SQLAlchemy==2.3.2
Flask-WTF==0.14.2
gunicorn==19.9.0
idna==2.8
itsdangerous==1.1.0
Jinja2==2.10
Mako==1.0.7
MarkupSafe==1.1.0
ndg-httpsclient==0.5.1
passlib==1.7.1
psycopg2==2.7.6.1
pusher==2.1.3
pyasn1==0.4.5
pycparser==2.19
PyJWT==1.4.2
PyNaCl==1.3.0
pyOpenSSL==19.0.0
python-dateutil==2.8.0
python-editor==1.0.4
pytz==2018.9
requests==2.21.0
six==1.12.0
speaklater==1.3
SQLAlchemy==1.2.18
tzlocal==1.5.1
urllib3==1.24.1
virtualenv==16.2.0
Werkzeug==0.14.1
WTForms==2.2.1

Установить время сеанса:

@app.before_request
def make_session_permanent():
    session.permanent = True
    app.permanent_session_lifetime = timedelta(minutes=300)
0
Ярига Олег 15 Апр 2019 в 15:14

2 ответа

Лучший ответ

Вам следует избегать местных file system или memory SESSION_TYPE настройте один из этих сервисов в Heroku:

  • redis: RedisSessionInterface
  • memcached: MemcachedSessionInterface
  • mongodb: MongoDBSessionInterface
  • sqlalchemy: SqlAlchemySessionInterface

FS Heroku и память сбрасываются при каждом запросе.

2
dani herrera 15 Апр 2019 в 20:01

Вы должны попробовать redis для сессии как dyno clear FS в нескольких сценариях, таких как один раз в 24 часа и при каждом развертывании. Использование нескольких dyno может вызвать ту же проблему из-за отсутствия общего кэширования (если используется FS).

1
svikramjeet 16 Апр 2019 в 06:40