问题标签 [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 回答
611 浏览

asynchronous - Tornado 异步装饰器,其中一个依赖于另一个

我正试图绕过龙卷风。我正在编写一个由 mongodb 支持的聊天应用程序,我正在使用motor它进行非阻塞访问。

我想要实现的是:

  1. 创建一个装饰器,用于motor从 mongo 异步拉取用户的记录
  2. 验证他们的凭据(用户名和令牌)
  3. 创建另一个装饰器,检查上面 1. 中检索到的 user_id 是否被允许访问聊天室。这需要另一个异步调用 mongomotor来检索“ChatRoom”记录。
  4. 如果一切正常,请订阅聊天室

我有装饰器 1. 工作(基本上取自http://tornadogists.org/5251927/):

麻烦的是,对于第二个装饰器,我需要访问self.current_user. 因为这是在异步回调中设置的,所以当我进入我validation的装饰器时它不可用(即在 auth 装饰器完成之前调用验证装饰器)。

我不可能以这种方式将装饰器与异步函数一起使用吗?在确保它self.current_user是 True 之后,我是否只需要在上述方法中调用验证方法,这样它更像是一个回调?

理想情况下,我希望在我的 Handler 中使用这两个装饰器包装我的方法,以便我可以在其他地方重用它们,即:

更新 其实没有依赖。user_id 作为参数提供,可用于并行运行两个装饰器 - 一个用于确认身份验证,另一个用于查看是否允许具有该 ID 的用户访问房间。只有在 时,该open()方法才会继续self.auth_check == True and self.room_check == True

可以open()在异步装饰器完成之前调用吗?

0 投票
1 回答
135 浏览

python - 在调用 open() 或 open_sync() 之前无法访问 MotorClient 上的属性“test”

我正在关注一些电机示例,它们给我带来了麻烦。我Python2.7在 virtualenv 中使用tornado 3.2,pymongo 2.5.0motor 0.1.2. 所有示例都抛出相同的错误。

0 投票
1 回答
769 浏览

python-3.x - 如何制作一个使用电机和龙卷风处理故障转移的装饰器?

我正在尝试编写一个装饰器,它采用一个与 mongodb 交互的函数,如果发生异常,它会重试交互。我有以下代码:

但这不起作用。它给出了一个错误,即 create_counter 产生了一个生成器。我已经尝试制作所有功能 @gen.coroutines 并没有帮助。

如何使 handle_failover 装饰器工作?

编辑:暂时没有装饰器。这应该可靠地创建一个计数器并将 object_id 返回给用户。如果引发异常,则会显示 500 页。

虽然我仍然不知道如何使计数器幂等的增量,因为 DuplicateKeyError 的技巧在这里不适用:

0 投票
0 回答
193 浏览

python - 如何让一个循环跟踪一个集合并为 Tornado 中的所有 WebSocketHandler 提供服务?

以下代码运行一个while True循环,并为所有侦听器提供相同的数据。它按我的意图工作,但我认为它很丑。有没有更好的方法来实现这一目标?

实际上,我将跟踪 MongoDB oplog,解析输出并只为感兴趣的听众提供服务。在这种情况下,listeners将是一个键为 ObjectID 的字典,例如一个 WebSocketHandlers 数组。这听起来是个好主意吗?

0 投票
1 回答
843 浏览

pymongo - python motor mongo 光标长度或查看下一个

有没有办法确定电机 mongo 光标的长度或向前看是否有下一个(而不是fetch_next也许has_next

而不是cursor.size()不考虑提供的 limit()

基本上我希望添加所需的 json 逗号

0 投票
1 回答
678 浏览

pymongo - python motor 在聚合上提供 fetch_next 异常

我在使用 Motor 的聚合函数时遇到了no fetch_next异常

代码是

打嗝了以下

例外::'TracebackFuture' 对象没有属性 'fetch_next'

然后我尝试了在 SO question 中找到的以下内容

提供了同样的例外。

在 Mongo shell 中运行聚合会产生真正的结果

Motor 没有提供这样的问题find和`find_one。事实上,它在其他方面工作得很棒。

安装是通过pip install motor在 Ubuntu 上完成的。

干杯

0 投票
7 回答
63698 浏览

python - MongoDB return True if document exists

I want to return true if a userID already exists and false otherwise from my collection.I have this function but it always returns True.

How could I get this function to only return true if a user id already exists?

0 投票
1 回答
521 浏览

python - 龙卷风协程函数中的变量会发生什么?

我对非阻塞 IO 的概念很陌生,并且有些东西我很难理解——关于协程。考虑这段代码:

get函数被调用时,它会创建字符串var。当函数等待motor.insert完成时,这个变量会发生什么?据我了解,“非阻塞”意味着没有线程在等待 IO 调用完成,并且在等待时没有使用内存。那么var存储的价值在哪里呢?执行恢复时如何访问它?

任何帮助,将不胜感激!

0 投票
1 回答
2151 浏览

mongodb - 电机:RuntimeError:将对象编码为 BSON 时超出了最大递归深度

我有一个基于异步 Tornado 和 mongoDB 的 API。它工作正常,除了一个处理程序:

当请求到来时,tornado 返回 HTTP 500 并带有以下堆栈跟踪:

在 mongoDB“标签”集合中,我有(例如):

有趣的部分是相同的“查找”方法在其他处理程序中完美运行,构建几乎相同

0 投票
2 回答
506 浏览

python - 从 MotorEngine 异步查询中获取结果

为了异步数据库访问,我正在尝试在我的 Tornado 应用程序中将 MongoEngine 与 MotorEngine 切换,但到目前为止我一无所获。

query

handler

当我打印ret变量时,它说<tornado.concurrent.Future object at 0x7fb0236fe450>. 如果我尝试打印ret.result()它会让我无处可去。

任何帮助表示赞赏,因为我正在努力解决我猜想的一切......