Jeket
@Jeket

Где найти работающий образец motor для tornado?

Экспериментирую с торнадо в качестве асинхронного драйвера для монги пытаюсь использовать motor. Мой код:

class Application(tornado.web.Application):
  def __init__(self):
    db_name = config['database']['name']
    self.db = motor.MotorClient(config['database']['host'], config['database']['port'])[db_name]

    settings = dict(
      template_path=os.path.join(os.path.dirname(__file__), "templates"),
      static_path=os.path.join(os.path.dirname(__file__), "static"),
      debug=True,
      autoescape=None
      )
    tornado.web.Application.__init__(self, url_patterns, **settings)


Сам обработчик (хочу при вызове страницы писать тестовую запись в монгу):

class MainHandler(tornado.web.RequestHandler):
  def get(self):
    doc={'who': 'data who'}
    self.application.db.insert(doc, callback=self.some_function)


Но получаю ошибку:
TypeError: MotorCollection object is not callable. If you meant to call the 'insert' method on a MotorCollection object it is failing because no such method exists.
  • Вопрос задан
  • 2561 просмотр
Решения вопроса 1
Jeket
@Jeket Автор вопроса
Все оказалось просто - надо вставлять значения в коллекцию, а вставлялось в БД
self.application.db.chat_messages.insert(doc, callback=self.some_function)
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@Singularity
class MainHandler(tornado.web.RequestHandler):
@tornado.web.asynchronous
def get(self):
doc={'who': 'data who'}
self.application.db.insert(doc, callback=self.some_function)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы