Flask WSGI 与 Nginx/Gunicorn:邮件列表在开发中有效,但在生产中无效

Flask WSGI 与 Nginx/Gunicorn:邮件列表在开发中有效,但在生产中无效

我已经将 Flask Web 应用程序部署到运行 Ubuntu 18.04 的 Digital Ocean droplet。该 Web 应用程序只是一个登录页面,其中包含一个表单,用于将访问者的电子邮件地址添加到 Mailchimp 邮件列表中。

该 Web 应用程序在开发过程中运行良好,但在生产过程中无法提交表单。提交表单只会重新加载页面。它不会将电子邮件地址提交到邮件列表,也不会显示“感谢”页面。

在开发中,我使用默认的 Flask WSGI 服务器直接访问 Web 应用程序(即 localhost:5000)。

在生产中,我将 Nginx 与 Gunicorn 结合使用。作为健全性测试,我在生产中使用 Flask 的默认 WSGI 服务器运行了该应用程序,并且运行良好。

除了使用 Nginx 和 Gunicorn 之外,Web 应用程序代码和配置(例如 Mailchimp 列表 id / api 密钥)在两个环境中是相同的。

什么原因导致了这个问题?

答案1

问题是由于没有从我的.flaskenv文件中读取 Mailchimp API 密钥造成的。

在开发中,该文件似乎.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')

相关内容