MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

kolba 0.10 mongo działająca poza kontekstem aplikacji

Aby zrozumieć ten błąd, musisz zrozumieć kontekst aplikacji .

Jest całkowicie możliwe, że ktoś napisze wiele aplikacji Flask, które obsługują ich żądania w tym samym procesie. Dokumenty podają następujący przykład...

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

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

Pamiętaj, że w tym przypadku aplikacja frontendowa może używać różnych konfiguracji Mongo, ale używać dokładnie tego samego obiektu rozszerzenia Mongo. Z tego powodu Flask nie może zakładać, która aplikacja jest „bieżącą” aplikacją podczas uruchamiania skryptu. Dlatego takie rzeczy jak url_for() lub wiele metod na rozszerzeniach, takich jak rozszerzenie MongoDB, musi wiedzieć, która aplikacja jest „bieżąca”, zanim cokolwiek zrobią.

Dlatego za każdym razem, gdy próbujesz użyć Flask lub funkcji rozszerzeń do zrobienia czegokolwiek innego niż skonfigurowanie samych aplikacji (z wartościami konfiguracyjnymi itp.), musisz jawnie powiedzieć Flask, jaka jest bieżąca aplikacja do przypisania do kontekst aplikacji .

Dokumenty opisują sposób, w jaki możesz to zrobić.

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

Musisz więc utworzyć sam obiekt aplikacji, a następnie użyć with app.app_context() linia. W tym zestawieniu wszystkie połączenia (takie jak te z numerem wewnętrznym Mongo) powinny działać. Pamiętaj, że nie musisz tego robić w widoku, ponieważ Flask automatycznie zrobi to wszystko w ramach obsługi żądania.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. mongodb niemożliwy (?) E11000 błąd zduplikowanego klucza klucz dupa podczas upsertingu

  2. Jak uzyskać liczbę wystąpień słowa kluczowego w ciągu za pomocą mongoDb

  3. Agregacja Mongo w odstępach czasu

  4. Tworzenie nowych kolekcji Meteor w locie

  5. Błąd indeksu tekstu MongoDB:zmiana języka nie jest obsługiwana