Viewing File: /opt/alt/python35/lib64/python3.5/site-packages/aiohttp/__pycache__/payload_streamer.cpython-35.pyc



Z@sdZddlZddlmZmZd
ZGdddZGdddZeeGd	d
d
eZeeGdddeZ	dS)al Payload implemenation for coroutines as data provider.

As a simple case, you can upload data from file::

   @aiohttp.streamer
   async def file_sender(writer, file_name=None):
      with open(file_name, 'rb') as f:
          chunk = f.read(2**16)
          while chunk:
              await writer.write(chunk)

              chunk = f.read(2**16)

Then you can use `file_sender` like this:

    async with session.post('http://httpbin.org/post',
                            data=file_sender(file_name='huge_file')) as resp:
        print(await resp.text())

..note:: Coroutine must accept `writer` as first argument

N)Payloadpayload_typestreamerc@s(eZdZddZddZdS)_stream_wrappercCs(tj||_||_||_dS)N)asyncio	coroutinecoroargskwargs)selfr	r
rr
/payload_streamer.py__init__"s	z_stream_wrapper.__init__cs"|j||j|jIdHdS)N)r	r
r)rwriterr
r
r__call__'sz_stream_wrapper.__call__N)__name__
__module____qualname__rrr
r
r
rr src@s(eZdZddZddZdS)rcCs
||_dS)N)r	)rr	r
r
rr-szstreamer.__init__cOst|j||S)N)rr	)rr
rr
r
rr0szstreamer.__call__N)rrrrrr
r
r
rr+sc@seZdZddZdS)StreamWrapperPayloadcs|j|IdHdS)N)_value)rrr
r
rwrite7szStreamWrapperPayload.writeN)rrrrr
r
r
rr4srcs.eZdZfddZddZS)
StreamPayloadcstj|||dS)N)superr)rvaluer
r)	__class__r
rr>szStreamPayload.__init__cs|j|IdHdS)N)r)rrr
r
rrAszStreamPayload.write)rrrrrr
r
)rrr;sr)r)
__doc__rZpayloadrr__all__rrrrr
r
r
r<module>s	
Back to Directory File Manager