问题标签 [motor-asyncio]

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 回答
1277 浏览

python - 当 loop.run_until_complete 工作时,asyncio.run 失败

此代码失败:

出现此错误:

当我取消注释两行loop并进行注释asyncio.run时,效果很好。什么事?我认为asyncio.run是这两条线的捷径。

问题出在motor_asyncio实现中,因为当我更改main为 simple时return 42,它asyncio.run​​也运行良好。

0 投票
2 回答
1091 浏览

mongodb - 使用电机连接到 MongoDB 时,Asyncio(Quart)抛出附加到不同循环错误的任务

我使用 MongoDB 和 Motor.Asyncio 创建了一个带有 Quart 的 webapp。当应用程序尝试查询数据库时,会引发错误:

我不明白为什么会发生这种情况,也不知道如何解决。

该应用程序一直运行没有问题,但我决定从 Python 3.6(在 Ubuntu-18.04 上)升级到 python 3.7.1。有了这个,我将 Quart 升级到 0.9.0。由于此升级,发生了上述错误。

该应用程序使用 Hypercorn 和 Nginx 从命令行运行。

在这种情况下,我不确定我的代码的哪些部分是相关的

我先导入 Quart,然后再导入 Motor:

在此之后,我添加:

我试过在电机导入块之前移动它,它没有改变任何东西。

正如问题/答案中所建议的: RuntimeError: Task attach to a different loop 我添加了:

那并没有解决它。

这是第一次调用电机的块,错误发生的地方:

我可以忽略错误并继续,但随后进行下一次调用并发生相同的错误。

我知道 Quart 在默认的 event_loop 上工作,应该不需要为电机创建一个特殊的循环。它在以前的版本中没有它的工作。所以我完全不知所措。

0 投票
0 回答
216 浏览

python - mondodb 拒绝了具有 srv 远程连接的 Python Montor asyncio

我一直在使用 pymongo 模块连接到 mongodb 并且我没有遇到任何问题,但是现在,我必须处理一些重要信息(每天大约 100 万个文档左右),我想尝试异步模块 Motor 一起工作。但是,我无法让它工作。因此,文档中说 motor.MotorClient 或 motor.motor_asyncio.AsyncIOMotorClient 应该作为 pymongo.Client 工作,它接收带有 srv 连接的字符串,应该是这样,但是每次我尝试使用电机客户端时,它抛出下一个错误:

所有名称服务器都未能回答查询集群主机。IN SRV:服务器 some-ip UDP 端口 53 已回答 REFUSED;服务器 some-ip UDP port 53 回答 DNS 操作超时。服务器 some-ip UDP 端口 53 已回答 REFUSED

有什么我想念的吗?

提前致谢...

0 投票
1 回答
51 浏览

mongodb - 在 MongoDB 中找不到带有自定义 _id 的记录

我有一个 MongoDB 数据库,我在其中_id使用一些生成的标签手动覆盖了该字段(重复不是问题)。

麻烦的是,我正在尝试find_one搜索,_id但它会不断返回None,我无法终生弄清楚。任何帮助,将不胜感激。

这是我到目前为止的代码:

编辑:

我在 pyMongo 文档中找到了一些关于ObjectID. 我尝试使用以下代码实现它:

但是得到这个回溯: bson.errors.InvalidId: 'mystring' is not a valid ObjectId, it must be a 12-byte input or a 24-character hex string

0 投票
0 回答
156 浏览

mongodb - Fastapi python mongodb错误无法执行数据库操作

我正在尝试从 database.py 访问 main.py 中的 mongodb 连接。但我得到 None 类型。请建议任何方法。下面是我的代码。我对从 database.py 获取 db 对象感到困惑。

浏览了互联网上的所有文档。但仍然没有解决办法。下面是我的 database.py 代码

下面是主要的py代码。

0 投票
1 回答
240 浏览

python - Python - 从 MongoDB [motor_asyncio] 获取文档

在 MongoDB 上,使用 "username" 上的 uniq 索引创建 "security" 集合,我正在使用 motor.motor_asynci 与 Mongo 一起工作。尝试获取与“用户名”相关的文档,如下所示:

得到“TypeError:'AsyncIOMotorCursor'对象不可迭代”

由于这个集合在搜索键上有 uniq 索引,我也尝试了 find_one 但也没有工作:

得到:

0 投票
0 回答
99 浏览

python - MongoDB中的多查询到单个集合以获得复杂的排序?

通过什么在 MongoDB(python、motor)中发出这种请求?

有一个文档集。有必要按以下顺序将它们显示在一个列表中:

  1. 先急。
  2. 进一步未兑现。
  3. 进一步的剩菜按日期从最近到最旧排序。

我制作了这样的工作解决方案,但我正在寻找如何将其优化为单个查询而不是三重查询并在 MongoBD 端添加分页?

文档示例:

预期结果:

更新:尝试使用$or,但结果完全无序:

我也尝试过聚合,但似乎没有帮助

0 投票
0 回答
66 浏览

mongodb - “NoneType”对象没有属性“get_collection”,FastAPI + Mongodb

我正在使用 FastAPI 对应用程序中一个用户的注册进行测试。当应用程序正在运行时,我可以完美地注册用户但是当我尝试使用 pytest 对相同的方法进行测试时,我遇到了问题,它无法识别get_collection

这是测试的方法

这是错误

在此处输入图像描述

在此处输入图像描述

我的注册方法

create_user方法_

和mongodb配置

这两种方法已添加到 main.py

0 投票
1 回答
97 浏览

python - RuntimeError: Event loop is closed - motor, asyncio

I am not able to run this test, i always have the same error RuntimeError: Event loop is closed

What i need to add to this code?

This is the error

enter image description here