MongoDB
 sql >> Teknologi Basis Data >  >> NoSQL >> MongoDB

labu 0,10 mongo bekerja di luar konteks aplikasi

Untuk memahami kesalahan ini, Anda perlu memahami konteks aplikasi .

Sangat mungkin bagi seseorang untuk menulis beberapa aplikasi Flask yang semuanya menangani permintaan mereka dalam proses yang sama. Dokumen berikan contoh berikut...

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

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

Perlu diingat bahwa dalam kasus ini, aplikasi frontend dapat menggunakan pengaturan Mongo yang berbeda, tetapi menggunakan objek ekstensi Mongo yang sama persis. Karena alasan ini, Flask tidak dapat mengasumsikan aplikasi mana yang "saat ini" ketika Anda menjalankan skrip. Oleh karena itu, hal-hal seperti url_for() , atau banyak metode pada ekstensi seperti ekstensi MongoDB, perlu mengetahui aplikasi mana yang "saat ini" sebelum mereka melakukan apa pun.

Oleh karena itu, setiap kali Anda mencoba menggunakan Flask atau fungsi ekstensi untuk melakukan apa pun selain mengatur aplikasi itu sendiri (dengan nilai konfigurasi, dll.), Anda perlu secara eksplisit memberi tahu Flask apa aplikasi saat ini untuk ditetapkan ke konteks aplikasi .

Dokumen memberikan cara agar Anda dapat melakukan ini..

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

Jadi, Anda harus membuat objek aplikasi itu sendiri, lalu gunakan with app.app_context() garis. Di dalam pernyataan with itu, semua panggilan Anda (seperti yang ke ekstensi Mongo Anda) akan berfungsi. Perhatikan bahwa Anda tidak perlu melakukan semua ini dalam tampilan karena Flask akan secara otomatis melakukan semua ini sebagai bagian dari penanganan permintaan.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. MongoDB:atur pengguna/kata sandi untuk mengakses db

  2. Cara menggunakan $in atau $nin dalam agregasi mongo $group $cond

  3. Muat Gambar dari Biner (Javascript - Ajax - MongoDB)

  4. luwak untuk menentukan pembaruan-upsert melakukan penyisipan atau pembaruan

  5. kueri agregat mongodb tidak mengembalikan jumlah yang tepat saat menggunakan $sum