python - 电机错误: callback is required

标签 python mongodb tornado tornado-motor

使用 motor tutorial 中的示例代码.

from tornado import gen

db = motor.MotorClient('localhost', 1235).open_sync().packmon

@gen.coroutine
def do_find():
    cursor = db.test_collection.find()
    for document in (yield cursor.to_list(length=100)):
        print document

tornado.ioloop.IOLoop.current().run_sync(do_find)

获取回溯:

Traceback (most recent call last):
  File "app_main.py", line 51, in run_toplevel
  File "chat.py", line 22, in <module>
    tornado.ioloop.IOLoop.current().run_sync(do_find)
  File "/home/user/venv/packmon-pypy/site-packages/tornado/ioloop.py", line 370, in run_sync
    return future_cell[0].result()
  File "/home/user/venv/packmon-pypy/site-packages/tornado/concurrent.py", line 129, in result
    raise_exc_info(self.__exc_info)
  File "/home/user/venv/packmon-pypy/site-packages/tornado/gen.py", line 221, in wrapper
    runner.run()
  File "/home/user/venv/packmon-pypy/site-packages/tornado/gen.py", line 507, in run
    yielded = self.gen.send(next)
  File "chat.py", line 19, in do_find
    for document in (yield cursor.to_list(length=100)):
  File "/home/user/venv/packmon-pypy/site-packages/motor/__init__.py", line 1465, in to_list
    check_callable(callback, required=True)
  File "/home/user/venv/packmon-pypy/site-packages/motor/__init__.py", line 74, in check_callable
    raise TypeError("callback is required")
TypeError: callback is required

文档说如果没有传递回调,这应该返回一个 Future,但它会抛出一个异常。使用 gen.Task 可以完成工作,但我不明白为什么教程中的简单示例不起作用。

最佳答案

您使用了“最新”教程和“稳定”代码。 Read the "stable" tutorial instead.

背景:Motor on PyPI is at version 0.1.2 。版本 0.1.2 是当前的“稳定”版本,具有基于回调的 API。您可以将其与 gen.Task 一起使用,如“稳定”教程所示。正如教程将告诉您的那样,您实际上应该使用 motor.Op,它类似于具有更好的异常语义的 gen.Task

您正在阅读的“最新”教程反射(reflect)了我在 GitHub 上的 Motor 主分支中的极其不稳定的代码。这将在接下来的几个月内作为 Motor 0.2 发布,并成为新的“稳定版”。同时,请遵循当前的“稳定”文档。

关于python - 电机错误: callback is required,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20502648/

相关文章:

python - pip 卸载上的自定义代码

java - 使用java驱动程序在Mongodb中存在多个文档的查询

mongodb - 初始化应用程序时出错 : No datastore implementation specified Message: No datastore implementation specified

python - 无法获得在 Tornado 中工作的 SSL 客户端证书

python - 查找另一列中两个条目之间的列的最小值

python - 使用 Python map reduce 进行 Avro 数据序列化

python - pytest:在测试用例不可见的 fixture 中分配属性

javascript - 如何在 MongoDB shell 中使用变量作为字段名称的一部分?

Python Tornado 全局变量

multithreading - 扭曲/ Tornado 等如何工作