Я развернул веб-приложение Flask в капле Digital Ocean под управлением Ubuntu 18.04. Веб-приложение - это просто целевая страница с единственной формой, которая добавляет адрес электронной почты посетителя в список рассылки Mailchimp.
Веб-приложение отлично работает в разработке, однако отправка формы не работает в производственной среде. Отправка формы просто перезагружает страницу. Он не отправляет адрес электронной почты в список рассылки и не отображает страницу с благодарностью.
В процессе разработки я использую сервер Flask WSGI по умолчанию для прямого доступа к веб-приложению (например, localhost: 5000).
В производстве я использую Nginx вместе с Gunicorn. В качестве проверки работоспособности я запустил приложение, используя в производственной среде WSGI-сервер Flask по умолчанию, и оно сработало нормально.
Помимо использования Nginx и Gunicorn, код и конфигурация веб-приложения (например, идентификатор списка Mailchimp / ключ API) идентичны в обеих средах.
Что могло вызвать эту проблему?
Проблема была связана с тем, что ключ API Mailchimp не считывался из моего .flaskenv
файл.
В процессе разработки выясняется, что .flaskenv
файл неявно загружается с помощью python-dotenv, но при производстве вам необходимо явно загрузить файл.
import os
from dotenv import load_dotenv
# explicitly load .flaskenv
basedir = os.path.abspath(os.path.dirname('__file__'))
load_dotenv(os.path.join(basedir, '.flaskenv'))
class Config(object):
SECRET_KEY = os.environ.get('SECRET_KEY')
MAILCHIMP_API_KEY = os.environ.get('MAILCHIMP_API_KEY')
MAILCHIMP_LIST_ID = os.environ.get('MAILCHIMP_LIST_ID')