構造化 Flask アプリを EB にデプロイする - 関数マッピング エラーの表示

ガブリエル・シケイラ

最近、Flask アプリを AWS ElasticBeanstalk にデプロイするのに苦労しています。私はウェブプロジェクトと 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' の処理中に例外が発生しました。
[2017 年 4 月 19 日水曜日 00:11:57.895865] [:エラー] トレースバック (最後の呼び出し): 
[2017 年 4 月 19 日水曜日 00:11:57.895881] [:error] ファイル "/opt/python/current/app/app /members/views.py"、行 14、
[2017 年 4 月 19 日水曜日 00:11:57.895903] [:error] @application.route('/') 
[2017 年 4 月 19 日水曜日 00:11:57.895909] [:error ] ファイル "/opt/python/run/venv/lib/python2.7/site-packages/flask/app.py"、行 1080、デコレータ内 
[2017 年 4 月 19 日水曜日 00:11:57.895921] [:error ] self.add_url_rule(ルール、エンドポイント、f、**オプション)
[Wed Apr 19 00:11:57.895935 2017] [:error] ファイル "/opt/python/run/venv/lib/python2.7/site-packages/flask/app.py"、行 64、wrapper_func 
[水4月19日 00:11:57.895944 2017] [:error] return 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", line 1051, in add_url_rule 
[Wed Apr 19 00:11:57.895956 2017] [:error] '既存のエンドポイント関数: %s' % エンドポイント) 
[ Wed Apr 19 00:11:57.895969 2017] [:error] AssertionError: ビュー関数のマッピングは既存のエンドポイント関数を上書きしています: index

私のアプリの構造は次のとおりです。

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()yieldsに変更するAssertionError: View function mapping is overwriting an existing endpoint function: newFunctionForTesting

編集2:それはに類似していてもよい、この1が、その場合には提案された解決策は、私が...たぶん青写真がより良い仕事ができる探していたアプローチではありません1つのファイルに書き込み、すべて、したこと...

編集 3:これが私のアプリの外観です。

app\__init__.py


    フラスコから import Flask, flash, 
    urlparseからのリクエストimport urlparse, urljoin 
    from urllib2 import urlopen 
    from フラスコ_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, 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 に登録します: 
        db.create_all() # 定義されたテーブルを作成します
        db_adapter = SQLAlchemyAdapter(db, User) # ユーザーモデルを登録します

    @application.before_first_request 
    def initialize(): 
        scheduler = BackgroundScheduler()
        スケジューラ.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


    フラスコからのインポート リダイレクト、url_for、render_template、
    flask_user からのリクエスト import login_required、roles_required、user_views としての
    アプリのインポート アプリケーション、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') 

    @application.ルート('/テーブル')) 
    @login_required 
    def table():
        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 Filesましたが、Elastic Beanstalk コンソールで静的フォルダーのマッピングを更新する必要がありました

ありがとう!

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

Javascriptを使用したFlaskアプリの構造化

分類Dev

Linuxのマニュアルページを構造化/非構造化データセットにダンプする

分類Dev

HerokuのFlaskアプリがデプロイ後にアプリケーションエラーを取得する

分類Dev

構造化データをSparkのschemaRDDにマッピングする方法は?

分類Dev

EBへのデプロイ中にRubyバージョンをアップグレードする

分類Dev

構造体をgoの関数にマッピングする

分類Dev

Pythonで構造化データファイルをプロットする方法は?

分類Dev

構造化配列エラーの表面プロット

分類Dev

AWS EBのFlaskアプリケーションでは、常に500内部サーバーエラーが発生します

分類Dev

構造化プログラミングと開発への構造化アプローチの違いは?

分類Dev

クラスにタプルのような構造化バインディングアクセスを提供する

分類Dev

OOP方式でのアプリケーションの構造化に関する指示

分類Dev

FlaskアプリをAzureにデプロイする際のWSGIのエラー

分類Dev

プロキシの構造化クローンを作成する

分類Dev

構造化バインディングの変数のタイプ

分類Dev

マルチパララップ、マルチイメージのブログ投稿に使用するJSON-LD構造化データは何ですか?

分類Dev

逆コンパイラ-ループを構造化する方法

分類Dev

FlaskアプリをHerokuにデプロイすると、ループの再起動でスタックします

分類Dev

大規模なLispアプリケーションの構造化

分類Dev

巨大なアプリケーション資産の構造化

分類Dev

変換アプリでデータを構造化する

分類Dev

サンキープロットのバイナリデータの構造化

分類Dev

Google Cloud Functionsに自動デプロイするために、gitで複数の関数を構造化するにはどうすればよいですか?

分類Dev

複数のアイテムに対するPython構造化ループ

分類Dev

C ++ 17の構造化バインディングのようにC ++ 11でマップを反復するテンプレートを作成します

分類Dev

AWSにFlaskアプリをデプロイする際のシークレットキーの処理

分類Dev

製品データにモデルを追加する構造化マークアップ

分類Dev

filebeatを使用して構造化ログデータをElasticSearchに直接プッシュする

分類Dev

RailsとAngularアプリの構造化

Related 関連記事

  1. 1

    Javascriptを使用したFlaskアプリの構造化

  2. 2

    Linuxのマニュアルページを構造化/非構造化データセットにダンプする

  3. 3

    HerokuのFlaskアプリがデプロイ後にアプリケーションエラーを取得する

  4. 4

    構造化データをSparkのschemaRDDにマッピングする方法は?

  5. 5

    EBへのデプロイ中にRubyバージョンをアップグレードする

  6. 6

    構造体をgoの関数にマッピングする

  7. 7

    Pythonで構造化データファイルをプロットする方法は?

  8. 8

    構造化配列エラーの表面プロット

  9. 9

    AWS EBのFlaskアプリケーションでは、常に500内部サーバーエラーが発生します

  10. 10

    構造化プログラミングと開発への構造化アプローチの違いは?

  11. 11

    クラスにタプルのような構造化バインディングアクセスを提供する

  12. 12

    OOP方式でのアプリケーションの構造化に関する指示

  13. 13

    FlaskアプリをAzureにデプロイする際のWSGIのエラー

  14. 14

    プロキシの構造化クローンを作成する

  15. 15

    構造化バインディングの変数のタイプ

  16. 16

    マルチパララップ、マルチイメージのブログ投稿に使用するJSON-LD構造化データは何ですか?

  17. 17

    逆コンパイラ-ループを構造化する方法

  18. 18

    FlaskアプリをHerokuにデプロイすると、ループの再起動でスタックします

  19. 19

    大規模なLispアプリケーションの構造化

  20. 20

    巨大なアプリケーション資産の構造化

  21. 21

    変換アプリでデータを構造化する

  22. 22

    サンキープロットのバイナリデータの構造化

  23. 23

    Google Cloud Functionsに自動デプロイするために、gitで複数の関数を構造化するにはどうすればよいですか?

  24. 24

    複数のアイテムに対するPython構造化ループ

  25. 25

    C ++ 17の構造化バインディングのようにC ++ 11でマップを反復するテンプレートを作成します

  26. 26

    AWSにFlaskアプリをデプロイする際のシークレットキーの処理

  27. 27

    製品データにモデルを追加する構造化マークアップ

  28. 28

    filebeatを使用して構造化ログデータをElasticSearchに直接プッシュする

  29. 29

    RailsとAngularアプリの構造化

ホットタグ

アーカイブ