2016-03-28 12 views
0

ich nur auf Python zu programmieren, bin ab, und schrieb diesen CodeAnschluss an db und warten auf http Anfrage simultaniusly

from bottle import route, run, template 
import pymongo 
from pymongo import MongoClient 


connection = MongoClient('localhost', 27017) 
db = connection.tongler 

@route('/hello/<name>') 
def index(name): 
    return template("Hello {{name}}", name=name) 

run(host='localhost', port=8888) 

print db 

aber es db Objekt drucken erst nach 8888 Zuhörer beendet, wie kann ich für http hören fordert und führt andere Operationen aus, ohne den http-Server-Abschluss abzuwarten? Wie ist das gemacht?

+0

Welche Operationen wollen Sie tun? –

+1

Normalerweise, wenn Sie Dinge unabhängig voneinander tun müssen, müssen Sie Threads oder Prozesse verwenden. Manchmal können Sie auch eine Art kollaboratives Multithreading verwenden, aber ich weiß nicht, ob die Flashen-Run-Methode so implementiert wird (wahrscheinlich nicht). –

Antwort

1

Sobald Sie diese Datei ausgeführt haben, ist der erste auszuführende Befehl der Methodenaufruf run, der einen Prozess startet, der die Ausführung der restlichen Anwendung blockiert, bis sie geschlossen wird.

Um die Datenbank zu verwenden, müssen Sie die Datenbankoperationen entweder als Ergebnis einer Anforderung oder vor dem Methodenaufruf run ausführen.

Zum Beispiel kann sagen, dass Sie die Datensätze in der Datenbank angezeigt werden sollen, könnte man es so tun:

@route('/records/<id>') 
def show_records(id=None): 
    results = db.mycollection.find_one({'id': id}) 
    return template('Record: {{record}}', record=results)