问题标签 [tornado-motor]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
274 浏览

python - 适用于 Windows 的 Mongodb 电机驱动程序

关于电机的问题https://github.com/mongodb/motor

自述文件说“Unix,包括 Mac OS X。不支持 Windows。”

我在 Windows 上运行带有电机 1.0 的 python 3.5,它看起来效果很好。

插入、更新、删除、查找、重新索引操作、上限集合和可尾游标与asyncio.

Windows 不支持什么?

0 投票
1 回答
1075 浏览

python - python 3 asyncio 和 MotorClient:如何将电机与多线程和多个事件循环一起使用

我带着一个关于 asyncio 的问题回来了。我发现它非常有用(尤其是由于带有线程的 GIL),并且我正在尝试提高某些代码的性能。

我的应用程序正在执行以下操作:

  • 1 后台守护线程“A”从连接的客户端接收事件,并通过填充 SetQueue(即删除重复 ID 的事件队列)和在 DB 中进行一些插入来做出反应。我从另一个模块得到这个守护进程(基本上我控制从收到事件时的回调)。在下面的示例代码中,我将其替换为我生成的线程,它非常简单地用 20 个项目填充队列并在退出之前模拟 DB 插入。
  • 1 后台守护线程“B”被启动(loop_start),他只是循环运行直到完成一个协程:

    • 获取队列中的所有项目(如果不为空,否则释放控制 x 秒,然后重新启动协程)
    • 对于队列中的每个 id,它会启动一个链式协程,该协程:

      • 创建并等待仅从数据库中获取该 ID 的所有相关信息的任务。我正在使用支持异步的 MotorClient 在任务本身中等待。

      • 使用进程池执行程序启动每个 id 的进程,该进程使用 DB 数据执行一些 CPU 密集型处理。

  • 主线程只是初始化 db_client 并接受 loop_start 和 stop 命令。

基本上就是这样。

现在我正在尝试尽可能提高性能。

我目前的问题是以motor.motor_asyncio.AsyncioMotorClient()这种方式使用:

  1. 它在主线程中初始化,我想在那里创建索引
  2. 线程“A”需要执行数据库插入
  3. 线程“B”需要执行 DB 查找/读取

我怎样才能做到这一点?Motor 声明它适用于单线程应用程序,您显然使用单个事件循环。在这里,我发现自己被迫有两个事件循环,一个在线程“A”中,一个在线程“B”中。这不是最佳的,但我没有设法在 call_soon_threadsafe 中使用单个事件循环,同时保持相同的行为......而且我认为性能方面我仍然通过两个释放对 gil 绑定 cpu 核心的控制的事件循环获得很多.

我应该使用三个不同的 AsyncioMotorClient 实例(每个线程一个)并如上所述使用它们吗?我在尝试时因不同的错误而失败。

这是我的示例代码,它不只包括异步中的 MotorClient 初始化__init__

0 投票
2 回答
1418 浏览

python - 使用龙卷风 AsyncHTTPTestCase 连接超时进行测试

我有单元测试龙卷风应用程序的问题,请帮助我。错误堆栈跟踪:

错误回溯(最后一次调用):文件“/Users/doc/python/lib/python3.5/site-packages/tornado/testing.py”,第 432 行,在 tearDown timeout=get_async_test_timeout()) 文件“/Users /doc/python-virt1/lib/python3.5/site-packages/tornado/ioloop.py",第 456 行,在 run_sync 中引发 TimeoutError('Operation timed out after %s seconds' % timeout) tornado.ioloop.TimeoutError: 5秒后操作超时

错误:tornado.application:Future 异常从未被检索到:Traceback(最近一次调用最后一次):文件“/Users/doc/python/lib/python3.5/site-packages/tornado/gen.py”,第 1021 行,在在 throw return self.__wrapped.throw( tp, *rest) 文件“/Users/doc/python-virt1/lib/python3.5/site-packages/tornado/gen.py”,第 1015 行,运行值 = future.result() 文件“/Users/ doc/python-virt1/lib/python3.5/site-packages/tornado/concurrent.py",第 237 行,结果 raise_exc_info(self._exc_info) 文件"",第 3 行,在 raise_exc_info tornado.curl_httpclient.CurlError: HTTP 599:来自服务器 Traceback 的空回复(最近一次调用最后一次):

test.py 文件:

api_test/base.py

测试/base.py

0 投票
3 回答
15954 浏览

mongodb - RuntimeError:附加到不同循环的任务

嗨,我正在使用 AsyncIOMotorClient 对 mongoDb 进行异步数据库调用。下面是我的代码。

运行此程序时,我遇到了异常

在上面的程序中 insertManyFn 将在 10 秒后被调用并执行插入操作。但是当它第一次调用 insertMany 时,我遇到了一个异常。

0 投票
1 回答
294 浏览

python - 如何在 Motor 1.1 中分组?

我在当前项目中为 mongoDB 使用 Motor async 客户端,我想使用 group by 之类的聚合进行查询。文档包含有关组的简短信息,但没有示例。

参数:

  1. key:分组依据(见上面的描述)
  2. 条件:要考虑的行规范(作为 find() 查询规范)
  3. initial:聚合计数器对象的初始值
  4. reduce:聚合函数作为 JavaScript 字符串

我不知道初始参数和减少的确切含义(作为javascript字符串?)。你能举个例子吗?

0 投票
1 回答
429 浏览

python - Python Tornado REST API 调用未渲染到移动设备

API 结果呈现到桌面,但不呈现到我的 iPhone。所以我有一个简单的休息 API,我正在从 ReactJS 前端进行调用。在超级代理遇到很多麻烦后,我正在使用 axios。我在任何浏览器控制台、桌面或移动设备中都没有收到任何错误(一直在使用 jsconsole 调试我的 iphone 5)。然而,在我的 Python Tornado 后端,它为桌面和移动设备抛出了一些错误:

第一个:

tornado.application:未捕获的异常 GET

第二:

错误:tornado.general:写入标头后无法发送错误响应错误:tornado.general:无法刷新部分响应

第三:

在处理上述异常的过程中,又出现了一个异常:

这可以作为我的 Python env 文件中发生的错误找到

TypeError:“str”对象不可调用

这些都没有使脚本/应用程序崩溃......这是我使用 axios 的 ReactJS/Javascript:

这是我的 Python Tornado 位:

这很简单,所以我不明白为什么它不能在我的 iPhone 上运行。我想我还应该提到我正在使用 Motor for MongoDB async,这就是为什么存在 async 和 await 的原因。除此之外,我确实删除了所有样式和 react-toolbox 的东西,只是为了确保它没有因此而渲染,并且没有任何区别。

我知道可能有很多事情我没有做,但我无法弄清楚那是什么,因为谷歌搜索任何错误只会返回少于 5 个相关结果。任何投入将不胜感激。谢谢!

哦 - 如果您想/需要查看整个项目,这里有一个指向我的 GitHub 存储库的链接。再次感谢!龙卷风定价者

编辑:

这是我在控制台中得到的: Python Tornado 错误

0 投票
1 回答
43 浏览

tornado-motor - 如何使用 Motor 运行 db.fsyncLock()

是否可以通过 Motor 运行 db.fsyncLock() 命令?我希望我的应用程序对数据库进行备份,并且需要在制作副本之前刷新并锁定文件。

0 投票
1 回答
680 浏览

python - 对龙卷风和电机使用异步

Python 3.5 的新手和asyncawait特性

以下代码仅返回一个未来对象。如何从数据库中获取实际的图书项目并将其写入 json?将 async await 与 motor-tornado 一起使用的最佳实践是什么?

0 投票
1 回答
62 浏览

python - 如何在单独的数据访问层正确使用电机

我开始了一个使用龙卷风和电机的小项目,如果我想获得非阻塞访问,我对如何处理访问数据层感到有些困惑

通常我用这种结构分隔我的项目

但我不知道我是否做这样的事情连接将是非阻塞的

'users' 这是我的 UsersDao 对象,看起来像

0 投票
1 回答
383 浏览

python - 如何使用电机在 MongoDB 上进行 $text 搜索?

我为数据库创建了一个索引。

现在我正在尝试搜索创建的索引

我发现这不起作用。电机文档说 db.collection.find(filter) 中的 filter 参数是一个 SON 对象。当我在我的集​​合上尝试 list_indexes() 时,它们也是 SON 对象。但是之后

也会导致错误。我们如何使用电机对索引进行 $text 搜索?

编辑:回复尼尔

我的初始数据库集合如下所示:

在创建索引(正在创建,我已经验证)之后,我需要的最终结果应该是这样的,

第一个得分更高,因为狗在主题中出现了两次,而第二个中出现了一次。

我使用以下代码检查了索引是否有效:

响应或索引如下: