【问题标题】:Does Motor for python tornado accept ssl connections to Mongodb?用于 python 龙卷风的电机是否接受到 Mongodb 的 ssl 连接?
【发布时间】:2014-11-01 23:12:00
【问题描述】:

我没有看到任何文档,我无法让它工作。

我正在执行与 pymongo 类似的操作:

import motor
cl = motor.MotorClient("192.168.1.5", ssl = True)
cl.admin.authenticate("someuser", "somepassword")
db = cl.bb     #this contains data already
from tornado import gen
import tornado.ioloop

@gen.coroutine
def do_find_one():
    document = yield db.bbticks.find_one({})
    print(document)

tornado.ioloop.IOLoop.instance().start()
IOLoop.current().run_sync(do_find_one)

In [1]: %run motortest.py

(blocks, with no prompt coming back)

所以我没有得到任何结果,尽管我应该得到一个记录,因为数据库肯定是填充的:

import pymongo
cl = pymongo.MongoClient("192.168.1.5", ssl = True)
cl.admin.authenticate("someuser", "somepassword")
db = cl.bb

document = db.bbticks.find_one({})
print(document)

In [3]: %run mongotest.py
{'open': 11650.0, 'close': 11650.0, 'value': 11650.0, 'low': 11650.0, 'numevents': 56, 'high': 11650.0, '_id': ObjectId('5444172e56ac847a43260b32'), 'source': 'HIST', 'time': datetime.datetime(2014, 7, 29, 13, 42), 'ticker': 'IHN+1M CMPL Curncy'}

为 A. Jesse Jiryu Davis 编辑答案

注释掉倒数第二行和“tornado.ioloop”。放在最后一行

import motor
cl = motor.MotorClient("192.168.1.5", ssl = True)
cl.admin.authenticate("someuser", "somepassword")
db = cl.bb
from tornado import gen
import tornado.ioloop

@gen.coroutine
def do_find_one():
    document = yield db.bbticks.find_one({})
    print(document)

#tornado.ioloop.IOLoop.instance().start()
tornado.ioloop.IOLoop.current().run_sync(do_find_one)

In [3]: %run motortest.py
{'low': 11650.0, 'ticker': 'IHN+1M CMPL Curncy', '_id': ObjectId('5444172e56ac847a43260b32'), 'value': 11650.0, 'time': datetime.datetime(2014, 7, 29, 13, 42), 'numevents': 56, 'high': 11650.0, 'close': 11650.0, 'source': 'HIST', 'open': 11650.0}

【问题讨论】:

    标签: python mongodb tornado-motor


    【解决方案1】:

    是的,Motor 从 0.2 版开始使用 SSL。您的问题是对 IOLoop.instance().start() 的调用。 IOLoop 永远运行,您的脚本永远不会到达带有“run_sync”的行。删除带有“开始”的行,您应该会得到您期望的结果。

    【讨论】:

    • 就像一个魅力.... ;-) 但是我必须在前面加上“tornado.ioloop”。到最后一行,否则我有一个“未定义名称 IOLoop”错误。已编辑......
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多