0

いくつかのデータを生成する Python スクリプトがあります。POST を使用して HTTP サーバーにストリーミングしたいと思います。つまり、データをバッファに蓄積してから送信するのではなく、データを作成したまま送信したいだけです。たくさんあるでしょう。

これを行う明白な方法は、書き込み可能なファイル オブジェクトを返す何らかの方法で HTTP 接続を開き、そのオブジェクトにデータを書き込み、接続を閉じることです。

ただし、これが私が調べたライブラリ ( urllib2httplib、およびrequests) のいずれかでサポートされていることは明らかではありません。

どうすればこれを達成できますか?

4

2 に答える 2

1

とにかく、この書き込み可能なオブジェクトはデータをバッファする必要があります -ストリーミング可能な HTTP POSTはありません。その場合、HTTP POST 以外のものを調べる必要があります。

StringIO などを使用してデータをバッファリングしてから、データを POST してみませんか。次のコードはクリーンアップできますが、 を使用したスケルトンは次のとおりですrequests

import requests
import StringIO

class HttpPostWritable(object):
    def __init__(self, url, init_buffer=''):
        self._url = url
        self._buffer = StringIO.StringIO(init_buffer)

    def write(self, data):
        self._buffer.write(data)

    def close(self):
        requests.post(self._url, self._buffer.getvalue())
于 2013-03-30T00:32:12.060 に答える
-1

urllib2 / urllib 経由で書き込み可能なファイル オブジェクトを取得することはありません。戻り値は、反復と読み取りをサポートする「ファイルのような」オブジェクトです。コンテンツを読み取って、書き込み用の独自のファイル オブジェクトを作成できる場合。

于 2013-03-29T19:46:59.787 に答える