AWS EC2中的Flask调试

时间:2015-10-16 02:58:34

标签: amazon-ec2 flask

我在亚马逊ec2服务器上运行Flask网页,由于某种原因调试器无法运行。我写了“app.debug = True”,但它似乎没有什么区别。我收到内部服务器错误,但它没有告诉我任何调试信息。有谁知道如何让它发挥作用?

1 个答案:

答案 0 :(得分:1)

据我所知,当Flask应用程序在生产环境中运行时(在您的情况下,它托管在Amazon EC2服务器上),您将无法正确调试Flask应用程序。

如果您想使用Werkzerug的交互式调试器,您需要在自己的机器上本地运行应用程序才能调试它。

但是,如果您希望在通过电子邮件在生产环境中操作时收到记录的错误,我建议您创建一个SMTPHandler并将其添加到附加到app.logger的Logger类中。请参阅ProductionConfig类下面的片段,该片段取自Miguel Grinberg在Github上的示例Flask应用程序。查看文件夹here:

class ProductionConfig(Config):
    SQLALCHEMY_DATABASE_URI = os.environ.get('DATABASE_URL') or \
        'sqlite:///' + os.path.join(basedir, 'data.sqlite')

    @classmethod
    def init_app(cls, app):
        Config.init_app(app)

        # Email errors to the administrators
        import logging
        from logging.handlers import SMTPHandler
        credentials = None
        secure = None
        if getattr(cls, 'MAIL_USERNAME', None) is not None:
            credentials = (cls.MAIL_USERNAME, cls.MAIL_PASSWORD)
            if getattr(cls, 'MAIL_USE_TLS', None):
                secure = ()
        mail_handler = SMTPHandler(
            mailhost=(cls.MAIL_SERVER, cls.MAIL_PORT),
            fromaddr=cls.FLASKY_MAIL_SENDER,
            toaddrs=[cls.FLASKY_ADMIN],
            subject=cls.FLASKY_MAIL_SUBJECT_PREFIX + ' Application Error',
            credentials=credentials,
            secure=secure)
        mail_handler.setLevel(logging.ERROR)
        app.logger.addHandler(mail_handler)