MongoDB
 sql >> база данни >  >> NoSQL >> MongoDB

най-добрата практика на обединяването на django + PyMongo?

Как работи обединяването на връзки в PyMongo?

Всеки екземпляр на Connection има вграден пул на връзки. По подразбиране всяка нишка получава свой собствен сокет, запазен при първата си операция. Тези сокети се задържат, докато end_request() не бъде извикан от тази нишка.

Извикването на end_request() позволява гнездото да бъде върнато в пула и да се използва от други нишки, вместо да се създава нов сокет. Разумното използване на този метод е важно за приложения с много нишки или с продължителни нишки, които правят малко извиквания към PyMongooperations .

Алтернативно, Връзка, създадена с auto_start_request=False, ще споделя гнезда (безопасно) между всички нишки.

Мисля, че се свежда до типа приложение, което имате и колко дълго ще задържат заявките за връзка. Идеята за извикване на end_request помага при дългосрочни заявки, които се задържат в сокет за дълго време и причиняват създаването на много сокети. Ако една заявка може да освободи връзката, когато вече не се нуждае от нея, тогава сокетът може да бъде преназначен за други заявки.

Ако са бързи заявки, тогава смятам, че auto_start_request=False работи чрез повторно използване на сокета.

Подсигуряването, че връзката продължава да използва същия сокет, означава, че ще има последователни четения. Помислете, ако сте направили заявка, но тя се забави и след това незабавно направи нова заявка и използва различен сокет. Този сокет успява да отговори преди предишния. Ще имате непоследователни данни, тъй като те не отразяват предишното записване.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Повишете подполета до най-високо ниво в проекцията, без да изброявате всички ключове

  2. Как да съхранявате геопространствена информация в mongoDB

  3. Django-nonrel срещу Django-mongodb срещу Mongokit срещу pymongo native

  4. Променете реда, в който свойствата се показват в MongoDB

  5. MongoDB dropIndex()