在 EB 上部署结构化 Flask 应用程序 - 查看函数映射错误

加布里埃尔·西凯拉

我最近一直在努力将我的 Flask 应用程序部署到 AWS ElasticBeanstalk。我对 Web 项目和 AWS 还很陌生,所以每天都很挣扎。每隔一段时间,我就会将我的项目部署到 EB(我过去已经能够解决问题),但是自从我将我的应用程序从单一的application.py方法重组为更加结构化的方法后,我一直在努力。部署本身已经成功,但我遇到了 500 错误。日志说:

[Wed Apr 19 00:11:57.895790 2017] [:error] mod_wsgi (pid=15947):目标 WSGI 脚本“/opt/python/current/app/app/members/views.py”无法作为 Python 模块加载。
[Wed Apr 19 00:11:57.895846 2017] [:error] mod_wsgi (pid=15947):处理 WSGI 脚本“/opt/python/current/app/app/members/views.py”时发生异常。
[Wed Apr 19 00:11:57.895865 2017] [:error] 回溯(最近一次通话):
[Wed Apr 19 00:11:57.895881 2017] [:error] File "/opt/python/current/app/app /members/views.py”,第 14 行,在
[Wed Apr 19 00:11:57.895903 2017] [:error] @application.route('/') 
[Wed Apr 19 00:11:57.895909 2017] [:error] ] 装饰器中的文件“/opt/python/run/venv/lib/python2.7/site-packages/flask/app.py”,第 1080 行
[Wed Apr 19 00:11:57.895921 2017] [:error] self.add_url_rule(rule, endpoint, f, **options)
[2017 年 4 月 19 日星期三 00:11:57.895935] [:error] 文件“/opt/python/run/venv/lib/python2.7/site-packages/flask/app.py”,第 64 行,在 wrapper_func 
[星期三4 月 19 日 00:11:57.895944 2017] [:error] 返回 f(self, *args, **kwargs) 
[Wed Apr 19 00:11:57.895949 2017] [:error] 文件“/opt/python/run/venv /lib/python2.7/site-packages/flask/app.py”,第 1051 行,在 add_url_rule 
[Wed Apr 19 00:11:57.895956 2017] [:error] '现有端点函数:%s'% 端点)
[ Wed Apr 19 00:11:57.895969 2017] [:error] AssertionError:视图函数映射正在覆盖现有的端点函数:索引

我的应用程序结构是:

myApp/ 
   runServer.py 
   requirements.txt 
   app/ 
      __init__.py 
      config.py 
      static/ 
      members/ 
         __init__.py 
         views.py 
         models.py 
      templates/

我的.ebextensions/<env-name>.config包含:

option_settings: 
  "aws:elasticbeanstalk:container:python": 
    WSGIPath: app/members/views.py

最后,我的views.py文件包含我所有的 url 路由。我已确保所有函数名称都相同。

有人知道我在看什么样的问题/解决方案吗?我可以提供更多信息来提供帮助吗?

谢谢!

编辑:将我的def index()函数更改views.pydef newFunctionForTesting()产生AssertionError: View function mapping is overwriting an existing endpoint function: newFunctionForTesting

编辑 2:它可能与类似,但在那种情况下,建议的解决方案是将所有内容都写在一个文件中,这不是我正在寻找的方法......也许蓝图可以更好地工作......

编辑 3:这是我的应用程序的样子。

app\__init__.py


    from flask import Flask, flash, request 
    from urlparse import urlparse, urljoin 
    from urllib2 import urlopen 
    from flask_user import SQLAlchemyAdapter, UserManager, current_user 
    import os 
    from apscheduler.schedulers.background import BackgroundScheduler 
    import pandas as pd 
    from app.members.models import db, User , AcademicData, Role, UserRoles, Query 
    from passlib.hash import bcrypt 
    import datetime 
    import json 

    # 初始化应用
    程序 application = Flask(__name__) 
    application.config.from_object("app.config.Config") 

    # 初始化 db 
    db.init_app(application)

    #
    使用 application.app_context()向数据库注册用户模型
        db.create_all() # 创建定义的表
        db_adapter = SQLAlchemyAdapter(db, User) # 注册用户模型

    @application.before_first_request 
    def initialize(): 
        scheduler = BackgroundScheduler() 
        scheduler .start() 
        scheduler.add_job(updateData, trigger = "interval", days = 1) 



    def updateData(): 
        ... 


    @application.context_processor 
    def injectFunction(): 
        def getDataTable(id): 
            ... 

    import members.views 

    # 初始化烧瓶用户
    user_manager = UserManager(db_adapter, application,register_view_function = members.views.protected_register)

app\members\views.py


    从flask导入重定向,url_for,render_template,
    从flask_user请求导入login_required,roles_required,views as user_views 
    from app import application, SITE_ROOT 
    import json 
    import os 
    import pandas as pd 

    @application.route('/') 
    def index(): 
        "" "
        索引视图。当前仪表板。
        :return: 
        """ 
        return redirect(url_for('dashboard')) 

    @application.route('/dashboard') 
    @login_required 
    def dashboard(): 
        ... 
        return render_template('dashboard. html' 
    def table():
 
    @应用程序。路线('/表')
    @login_required 
        return render_template('table.html') 

    @application.errorhandler(404) 
    def not_found(error): 
         return render_template('404.html') 

    @application.errorhandler(500) 
    @application.errorhandler(503) 
    def server_error( error): 
        return render_template('503.html') 

    @roles_required('admin') 
    def protected_register(): 
        return user_views.register()

加布里埃尔·西凯拉

我按照这个例子来设置我的 WSGIPath,但是自从@davidism 指出它,我尝试了一种不同的方法并且它起作用了。我创建了一个app.wsgi文件,它基本上只是导入我的应用程序对象并WSGIPath: app/app.wsgi在我的.ebextensions/<env-name>.config. 该应用程序现在通过 Elastic Beanstalk 成功部署和启动。我的静态资源停止工作,但我必须更新Configuration > Software Configuration > Static FilesElastic Beanstalk 控制台中静态文件夹的映射

谢谢!

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在AWS Elastic Beanstalk上部署结构化Flask应用程序

来自分类Dev

AWS EB上的Flask应用程序始终会给我500内部服务器错误

来自分类Dev

502在AWS EB中部署的错误网关烧瓶应用程序

来自分类Dev

部署 Python Flask 应用程序的错误方式?

来自分类Dev

AWS EB部署-我的应用程序在哪里?

来自分类Dev

无法部署应用程序 - aws eb 上的 ruby

来自分类Dev

使用 RDS 在 AWS EB 上部署 Spring Boot 应用程序

来自分类Dev

在pythonanywhere.com上部署Flask网站/应用程序

来自分类Dev

在Apache上部署Flask应用程序时出错

来自分类Dev

在AWS上部署Flask应用程序时处理密钥

来自分类Dev

在 apache 上部署 Flask 应用程序工厂

来自分类Dev

在Elastic Beanstalk上部署Flask应用程序:没有名为“应用程序”的模块

来自分类Dev

如何在 AWS EC2 上部署 Flask 应用程序 - 内部服务器错误?

来自分类Dev

无法在 Heroku 上部署 Flask 应用程序 [致命错误:mpfr.h:没有这样的文件或目录]

来自分类Dev

将Flask应用程序部署到heroku会导致create_app()出现500错误

来自分类Dev

Heroku上的Flask App部署后出现应用程序错误

来自分类Dev

Flask 应用程序部署 - 导入错误:没有名为“app”的模块

来自分类Dev

将 Flask 应用程序部署到 AWS beanstalk 时出现错误 [Errno 2]

来自分类Dev

AWS-EB初始化特定EB应用程序时设置账户级默认环境

来自分类Dev

成功在Azure上部署Flask应用程序,但该应用程序在打开网站后无法正常工作

来自分类Dev

AWS IAM用户应具有哪些策略模板才能部署EB应用程序?

来自分类Dev

在 AWS EB 上部署 docker 时如何映射端口

来自分类Dev

在heroku上部署Meteor 1.0应用程序后出现应用程序错误

来自分类Dev

Django eb部署错误消息

来自分类Dev

Django eb部署错误消息

来自分类Dev

在1&1共享主机上部署flask应用程序(使用CGI)

来自分类Dev

在gunicorn上部署flask应用程序,模块对象没有属性

来自分类Dev

如何在具有崩溃保护功能的Lightsail上部署Flask应用程序?

来自分类Dev

如何在Koding.com上部署Flask应用程序

Related 相关文章

  1. 1

    如何在AWS Elastic Beanstalk上部署结构化Flask应用程序

  2. 2

    AWS EB上的Flask应用程序始终会给我500内部服务器错误

  3. 3

    502在AWS EB中部署的错误网关烧瓶应用程序

  4. 4

    部署 Python Flask 应用程序的错误方式?

  5. 5

    AWS EB部署-我的应用程序在哪里?

  6. 6

    无法部署应用程序 - aws eb 上的 ruby

  7. 7

    使用 RDS 在 AWS EB 上部署 Spring Boot 应用程序

  8. 8

    在pythonanywhere.com上部署Flask网站/应用程序

  9. 9

    在Apache上部署Flask应用程序时出错

  10. 10

    在AWS上部署Flask应用程序时处理密钥

  11. 11

    在 apache 上部署 Flask 应用程序工厂

  12. 12

    在Elastic Beanstalk上部署Flask应用程序:没有名为“应用程序”的模块

  13. 13

    如何在 AWS EC2 上部署 Flask 应用程序 - 内部服务器错误?

  14. 14

    无法在 Heroku 上部署 Flask 应用程序 [致命错误:mpfr.h:没有这样的文件或目录]

  15. 15

    将Flask应用程序部署到heroku会导致create_app()出现500错误

  16. 16

    Heroku上的Flask App部署后出现应用程序错误

  17. 17

    Flask 应用程序部署 - 导入错误:没有名为“app”的模块

  18. 18

    将 Flask 应用程序部署到 AWS beanstalk 时出现错误 [Errno 2]

  19. 19

    AWS-EB初始化特定EB应用程序时设置账户级默认环境

  20. 20

    成功在Azure上部署Flask应用程序,但该应用程序在打开网站后无法正常工作

  21. 21

    AWS IAM用户应具有哪些策略模板才能部署EB应用程序?

  22. 22

    在 AWS EB 上部署 docker 时如何映射端口

  23. 23

    在heroku上部署Meteor 1.0应用程序后出现应用程序错误

  24. 24

    Django eb部署错误消息

  25. 25

    Django eb部署错误消息

  26. 26

    在1&1共享主机上部署flask应用程序(使用CGI)

  27. 27

    在gunicorn上部署flask应用程序,模块对象没有属性

  28. 28

    如何在具有崩溃保护功能的Lightsail上部署Flask应用程序?

  29. 29

    如何在Koding.com上部署Flask应用程序

热门标签

归档