2017-03-05 3 views
2

私はPythonを使ってMongoデータベースからデータを取り出して分析しています。 私はmeteor appとclient pythonを使ってリアルタイムでデータを取得しています。 、私はこのスクリプトを実行すると、それだけで「A」内の現在のデータに私を見ると、コンソールが閉じますPython流星を使ったデータのリアルタイムの変化を見る

from MeteorClient import MeteorClient 
def call_back_meth(): 
    print("subscribed") 
client = MeteorClient('ws://localhost:3000/websocket') 
client.connect() 
client.subscribe('tasks', [], call_back_meth) 
a=client.find('tasks') 
print(a) 

私はコンソールがケースにオープンし、印刷データを滞在させたい:これは私のコードです変化の While Trueを使用してスクリプトを実行して変更を確認しましたが、良い解決策ではないと思います。他に最適化されたソリューションはありますか?

+0

私はPythonでMeteorClientを使ったことがないが、流星の[observer関数](HTTPがあります://ドキュメントが。 meteor.com/api/collections.html#Mongo-Cursor-observe)を呼び出してカーソルを呼び出すと、データがコレクションに追加/更新/削除されるたびにコールバックが実行されます。同等の機能をMeteorClientで見つけることができるかどうかを確認してください。 – jordanwillis

+0

はい、私は試してみました、それはありがとうございました –

答えて

0

フィードバックをリアルタイムに取得するには、変更をサブスクライブしてその変更を監視する必要があります。ここでtasksを見ての例です:

from MeteorClient import MeteorClient 

def call_back_added(collection, id, fields): 
    print('* ADDED {} {}'.format(collection, id)) 
    for key, value in fields.items(): 
     print(' - FIELD {} {}'.format(key, value)) 

    # query the data each time something has been added to 
    # a collection to see the data `grow` 
    all_lists = client.find('lists', selector={}) 
    print('Lists: {}'.format(all_lists)) 
    print('Num lists: {}'.format(len(all_lists))) 

client = MeteorClient('ws://localhost:3000/websocket') 
client.on('added', call_back_added) 
client.connect() 
client.subscribe('tasks') 

# (sort of) hacky way to keep the client alive 
# ctrl + c to kill the script 
while True: 
    try: 
     time.sleep(1) 
    except KeyboardInterrupt: 
     break 

client.unsubscribe('tasks') 

Reference)(Docs

+0

ありがとう、あなたは私の一日を作った:) –

関連する問題