プロキシサーバー越しにPythonでThriftのTHttpClientを使用する

見事、Google App EngineのPythonでThriftを動作させることが出来ました。
Google App Engine(Python)でThriftを動作させる

プロキシサーバー越しにアクセスして、計算結果を取得できるか試してみました。


THttpClientの修正



何も考えずに動かしたら、やっぱり動きませんでした。。。
THttpClientのソース(クライアントのC:\Python25\Lib\site-packages\thrift\transport\THttpClient.py)に
問題があるようです。

W3C HTML batch Validator in Python

こちらを参考に使用しているhttplibのプロキシ対応を行いました。

まずopen部分


def open(self):
    if self.scheme == 'http':
        #self.__http = httplib.HTTP(self.host, self.port)
        self.__http = httplib.HTTP("proxy.server.com", 8080)
    else:
        self.__http = httplib.HTTPS(self.host, self.port)




こんな感じで、プロキシサーバーの名前とポート番号を指定します。
※とりあえず、動くか試したかったので、ハードコーティングしました。

次にflush部分


def flush(self):
    if self.isOpen():
        self.close()
    self.open();
    
    # Pull data out of buffer
    data = self.__wbuf.getvalue()
    self.__wbuf = StringIO()
    
    # HTTP request
    #self.__http.putrequest('POST', self.path)
    self.__http.putrequest('POST', "http://" + self.host + self.path)




putrequestにurlを渡すように修正します。

これでプロキシ越しでgoogle app engineのthriftにアクセスできるようになりました。




関連記事

コメント

プロフィール

Author:symfo
blog形式だと探しにくいので、まとめサイト作成中です。
https://symfo.web.fc2.com/

PR

検索フォーム

月別アーカイブ