Domanda

Dopo aver combattuto con diverse cose qui e là, sono stato finalmente in grado di ottenere BottlePY in esecuzione su Apache ed eseguire un MongoDB sito alimentato. Sono abituato a applicazioni in esecuzione Django, così sarò relativi a tale un po 'nella mia interrogazione.

Il problema

Ogni volta che una pagina viene caricata tramite BottlePY, la connessione al database MongoDB situato MongoHQ.com ha bisogno di essere ri-autenticata (il che significa che probabilmente doveva riconnessione).

Che cosa ho trovato

I acclusi una funzione db.keep_alive() all'inizio di ogni funzione modello, in modo che prima di qualsiasi richiesta mongodb viene eseguito, provi ad eseguire una query semplice. Se fallisce, cattura l'errori Autoreconnect OperationFailure o e poi chiama la funzione db.authenticate(). Dopo che Riautentica, ce l'ho aggiungere un legno a tronchi dB a monitorare quanto spesso ha bisogno di ripetere l'autenticazione. Attualmente, ha bisogno di ripetere l'autenticazione su ogni caricamento della pagina (che richiede l'esecuzione di una query). Questo non è giusto.

Differenza da Django

io uso questo stesso concetto in Django, e hanno trovato che la connessione db ha solo bisogno di essere autenticato dopo 10-15 minuti di nessuna query in esecuzione.

Non capisco il motivo per cui la creazione di una connessione pymongo in Django sarebbe diverso dal creare uno in bottiglia, dal momento che sto usando lo stesso driver, funzioni e metodi. Non sto usando qualsiasi ORMS o qualcosa di simile sia.

Versioni

  • Bottiglia: 0.9.dev
  • Django: 1.2.1 finale
  • PyMongo: 1.8

Apprezzo l'aiuto!

Update: Un amico è stato in grado di dare uno sguardo rapido e notò il successivo aiuto maggio con rispondere alla mia domanda.

  

Sembra che ogni richiesta è   il lancio di un nuovo processo di Python, come   al contrario di Django, in cui un unico   resti processo in esecuzione per un lungo   periodo di tempo.

È stato utile?

Soluzione

Questo solo ha finito per essere una cosa strana tra la Bottiglia e MongoHQ. Nessuna soluzione vera è stata trovata, ma non ho potuto ricreare con altri framework. Tutte le altre idee sono apprezzate.

Altri suggerimenti

funziona il vostro apache xxx.conf contiene qualcosa del tipo:

WSGIDaemonProcess project user=mysite group=www-data processes=5 threads=1 WSGIProcessGroup project

Credo che più importante dovrebbe essere threads=1

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top