Я работаю над своим первым веб-приложением (Flask) и дошел до того, что развернул его.Я использую mysql для БД, sqlalchemy для orm и flask_login, чтобы помочь с аутентификацией.На внешнем сервере я использую gunicorn и nginx.
Все настроено, и я могу получить доступ к сайту.Проблема, с которой я столкнулся, заключается в том, что при вводе данных и их поиске приложение не может получить к ним постоянный доступ (т. Е. Искать введенные данные и возвращать ответ, содержащий только что введенные данные).Под последовательным пониманием я имею в виду, что я могу видеть введенные данные 1 раз из ~ 5 раз, когда я обновляю поиск.Чтобы было ясно, информация поступает в БД, и сервер возвращает флэш-сообщение о том, что данные были успешно отправлены.
Кроме того, я тестировал отправку формы, когда куки были удалены.Как и ожидалось, это дало мне ошибку CSRF.Однако впоследствии приложение не будет обновлять файлы cookie.
Обе проблемы решались самостоятельно после остановки и перезапуска gunicorn.
Я подозреваю, что это проблема конфигурации приложения, но не выяснилчто вызывает это.Я попытался обновить сервер разработки до настроек конфигурации колбы, перечисленных ниже, но у меня не возникло таких же проблем.Поэтому я подозреваю, что это связано с gunicorn или nginx.
Ниже приведен код для конфигурационного файла.
**Flask config.py**
class Config(object):
SECRET_KEY = os.environ.get("SECRET_KEY")
#sql alchemy info
SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL')
SQLALCHEMY_TRACK_MODIFICATIONS = False
class ProductionConfig(Config):
DEBUG = False
TESTING = False
REMEMBER_COOKIE_HTTPONLY = True
SESSION_PROTECTION = "strong"
SESSION_COOKIE_SECURE = True
REMEMBER_COOKIE_SECURE = True
class DevelopmentConfig(Config):
DEBUG = True
TESTING = False
**Supervisor gunicorn configuration**
[program:Ask]
command=/home/ubuntu/Ask/venv/bin/gunicorn -b localhost:8000 -w 4 Ask:app
directory=/home/ubuntu/Ask
user=ubuntu
autostart=true
autorestar=true
stopasgroup=true
killasgroup=true
Заранее спасибо.Пожалуйста, дайте мне знать, если какая-либо дополнительная информация будет полезна.