2016-05-18 11 views
0

私は本当に竜巻フレームの仕事と '未来'のオブジェクトで混乱しています。 だから私はあるHTTP呼び出し コードを作成することにより、非同期応答を取得したい:私はこの1つを終えた後の事は、私はそれをテストすることができ、どのように、ある竜巻の将来のオブジェクトからコンテンツを取得する方法

class TestAsyncHttp(object): 
    def __init__(self): 
     self._http_client = httpclient.AsyncHTTPClient() 

    @gen.coroutine 
    def get_response(self, params) 
     response = yield self._request(
      method='POST', 
      endpoint='test' 
      data=params 
     ) 
     raise gen.Return(response) 

    @gen.coroutine 
    def _request(self, method, endpoint, data): 
     url = self._make_url(endpoint) #this includes the port.. 
     headers = self._load_headers() 
     request = httpclient.HTTPRequest(
      url, 
      method=method, 
      headers=header, 
      body=json.dump(data) 
     ) 
     response = yield self._http_client.fetch(request) 
     raise gen.Return(response) 

私が含まれているスクリップを書き込もうとしました...:

import json 
with open('test/request.json') as json_file: 
    request_json = json.loads(json_file.read()) 

def get_response(): 
    x = TestAsyncHttp() 
    ret = yield x.get_response(request_json) 
    body = ret.body 
    print body['value'] 

get_response 

しかし、その後、私は「のpython 『パス・ツー・スクリプト』」 何も出力があります。 私が "python"環境に入ったばかりの場合、私は "未来"のオブジェクトを持っていませんgetitem ..将来のコンテンツをどのように得ることができますか?

ありがとうございます!

答えて

0

使用run_syncは、同期の方法で非同期コルーチンを実行する:

def get_response(): 
    x = TestAsyncHttp() 
    ret = IOLoop.current().run_sync(lambda: x.get_response(request_json)) 
    body = ret.body 
    print body['value'] 

lambdarequest_jsonパラメータを渡すだけで、ここで必要になります。 get_responseに引数がない場合は、代わりに次のようにすることができます。

ret = IOLoop.current().run_sync(x.get_response) 
関連する問題