sql >> Databasteknik >  >> NoSQL >> MongoDB

kolv 0,10 mongo arbetar utanför applikationssammanhang

För att förstå det här felet måste du förstå applikationskontexten .

Det är fullt möjligt för någon att skriva flera Flask-applikationer som alla hanterar deras förfrågningar i samma process. Dokumenten ger följande exempel...

from werkzeug.wsgi import DispatcherMiddleware
from frontend_app import application as frontend
from backend_app import application as backend

application = DispatcherMiddleware(frontend, {
    '/backend':     backend
})

Tänk på att i det här fallet kan frontend-appen använda olika Mongo-inställningar, men använda exakt samma Mongo-tilläggsobjekt. Av denna anledning kan Flask inte anta vilken som är den "aktuella" appen när du kör ett skript. Därför saker som url_for() , eller många av metoderna på tillägg som MongoDB-tillägget, måste veta vilken applikation som är den "nuvarande" innan de gör något.

Därför, närhelst du försöker använda Flask- eller tilläggsfunktioner för att göra något annat än att ställa in själva applikationerna (med konfigurationsvärden, etc.), måste du uttryckligen tala om för Flask vad som är den aktuella appen att tilldela till applikationskontext .

Dokumenten ger dig ett sätt att göra detta...

# 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" )

Så du måste skapa själva appobjektet och sedan använda with app.app_context() linje. Inom detta med uttalande bör alla dina samtal (som de till din Mongo-anknytning) fungera. Observera att du inte behöver göra något av detta i en vy eftersom Flask automatiskt kommer att göra allt detta som en del av sin hantering av en begäran.




  1. Hur fyller man i kapslade enheter i mongoose?

  2. Jämför tecken på 64-bitars nummer med 32-bitars bitvisa operationer i Lua

  3. Applikationen kunde inte startas (port 8080) inte tillgänglig

  4. Apache-Nifi :Ta bort MongoDB-samlingar