Thank you Andrew for that, interesting piece of code ;-)

--
Ludovic Gasc (GMLudo)
http://www.gmludo.eu/

2015-06-11 14:08 GMT+02:00 Andrew Svetlov <andrew.svet...@gmail.com>:

> Published [janus](https://pypi.python.org/pypi/janus/0.0.1) --
> thread-safe and async-aware queue with limited capacity, as you requested :)
>
>
> On Saturday, February 28, 2015 at 2:55:59 AM UTC+3, Tin Tvrtković wrote:
>>
>> I was contemplating this just now.
>>
>> Let's say you want to stream a (huge) file from disk. You can fire off a
>> reader in a separate thread, using call_in_executor. Now this reader needs
>> to be able to feed the client chunks of the file as they are read, and also
>> you'd want backpressure. A thread-safe and async-aware queue (with limited
>> capacity) seems like the simplest solution by far. It'd be great if
>> something like this was available from the standard library; I'm not
>> entirely sure how to create one myself.
>>
>> What would the API of this queue look like? Would you need a put/get
>> version that blocks the thread, and a separate put/get version that blocks
>> a task?
>>
>> On Wednesday, February 25, 2015 at 2:43:54 PM UTC+1, Victor Stinner wrote:
>>>
>>> Hi,
>>>
>>> On IRC, someone told me that it took him hours to understand that
>>> asyncio.Queue is not thread-safe and he expected asyncio.Queue to be
>>> thread-safe. I modified the asyncio documentation to mention in almost
>>> all classes that asyncio classes are not thread-safe.
>>>
>>> I didn't touch the doc of lock classes (ex: asyncio.Lock), because I
>>> don't know if they are thread safe or not. Since locks should be used
>>> with "yield from lock", it's not easy to combine them with
>>> loop.call_soon_threadsafe().
>>>
>>> Maybe we should modify asyncio.Queue and asyncio.Lock to make them
>>> thread-safe?
>>>
>>> What do you think?
>>>
>>> Victor
>>>
>>

Reply via email to