1

ドキュメントが表示されず、機能させることができません。

私は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の回答の編集

最後から 2 番目の行はコメント アウトされ、「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}
4

1 に答える 1

2

はい、Motor はバージョン 0.2 から SSL を使用しています。問題は IOLoop.instance().start() の呼び出しです。IOLoop は永久に実行され、スクリプトが「run_sync」の行に到達することはありません。「開始」のある行を削除すると、期待どおりの結果が得られるはずです。

于 2014-11-02T00:47:55.783 に答える