Назад | Перейти на главную страницу

Flask WSGI против Nginx / Gunicorn: список рассылки работает в разработке, но не в продакшене

Я развернул веб-приложение 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')