sql >> データベース >  >> NoSQL >> MongoDB

アプリケーションコンテキスト外で動作するフラスコ0.10mongo

    このエラーを理解するには、アプリケーションコンテキスト を理解する必要があります。 。

    誰かが同じプロセスでリクエストを処理する複数のFlaskアプリケーションを作成することは完全に可能です。ドキュメント次の例を挙げてください...

    from werkzeug.wsgi import DispatcherMiddleware
    from frontend_app import application as frontend
    from backend_app import application as backend
    
    application = DispatcherMiddleware(frontend, {
        '/backend':     backend
    })
    

    この場合、フロントエンドアプリは異なるMongoセットアップを使用できますが、まったく同じMongo拡張オブジェクトを使用することに注意してください。このため、Flaskは、スクリプトを実行するときに、どちらが「現在の」アプリであるかを推測できません。したがって、url_for()など 、またはMongoDB拡張機能などの拡張機能の多くのメソッドは、何かを実行する前に、どのアプリケーションが「現在の」アプリケーションであるかを知る必要があります。

    したがって、Flaskまたは拡張機能を使用して、アプリケーション自体をセットアップする以外のこと(構成値など)を実行しようとする場合は常に、アプリケーションコンテキスト 。

    ドキュメントには、これを実行できる方法が記載されています。

    # Be careful about recursive imports here
    from . import app
    from .extention import mongo
    
    @sched.interval_schedule(minutes=1)
    def long_running_queries():
        with app.app_context():
            mongo.db.command("aggregate", "collection", pipeline = "some query" )
    

    そのため、アプリオブジェクト自体を作成してから、with app.app_context()を使用する必要があります。 ライン。そのwithステートメント内で、すべての呼び出し(Mongo拡張機能への呼び出しなど)が機能するはずです。 Flaskはリクエストの処理の一部としてこれらすべてを自動的に実行するため、ビューでこれを行う必要はないことに注意してください。




    1. MongoDBの配列オブジェクトから特定のオブジェクトを削除する方法

    2. mongodbの集計クエリによって返されたドキュメントを削除する方法

    3. MongoDB + Doctrine:テキスト検索スコアでクエリを並べ替える方法

    4. フィールドがscalaキーワードの場合、JSONをケースクラスに自動的にマッピングするにはどうすればよいですか?