2016-03-28 2 views
0

Я только начинаю программировать на Python, и написал этот кодПодключение к БД и ожидания для запроса HTTP 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 

но печать дб объекта только после завершения 8888 слушателя, как я могу слушать HTTP запросы и выполнять другие операции, не дожидаясь завершения HTTP-сервера? Как это делается?

+0

Какие операции вы хотите сделать? –

+1

Обычно, если вам нужно делать вещи независимо друг от друга, вам нужно использовать потоки или процессы. Иногда вы также можете использовать некоторую форму совместной многопоточности, но я не знаю, реализуется ли метод запуска бутылки (возможно, нет). –

ответ

1

После выполнения этого файла первой командой, которая будет выполнена, является вызов метода run, который запускает процесс, который блокирует остальную часть приложения, пока он не будет закрыт.

Чтобы использовать базу данных, вам необходимо выполнить операции с базой данных либо в результате запроса, либо где-нибудь перед вызовом метода run.

Например, предположим, что вы хотите, чтобы показать записи в этой базе данных, вы можете сделать это следующим образом:

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