Could probably jury rig it together with a Queue.  (Will need to run Parquet in 
a separate thread.)

class FileLikeIter:
    def __init__(self):
        self.q = Queue(1)

    def write(self, data):
        self.q.put(data)

    def __iter__(self):
        try:
            while True:
                yield self.q.get()
        except Empty:
            ...

— Theron



> On Aug 9, 2022, at 11:27 AM, Michael Merickel <[email protected]> wrote:
> 
> This harkens back to the discouraged write() callable in WSGI PEP 3333 
> returned by the start_response() invocation. The PEP as well as Pyramid as a 
> framework would encourage you to map the logic into an app_iter as Bert 
> suggested.
> 
> I think you'll want to define a file-like object that you can write to and 
> set as the app_iter. The question will be whether you try to do this by 
> writing from a separate thread or in some other way because once you return 
> control to the WSGI server to iterate on your app_iter then you are no longer 
> in control - you'll need some buffer between where you're generating your 
> parquet file and what you're returning from the app_iter. I don't think a 
> simple tempfile is good enough because you want the app_iter to wait instead 
> of stopping when it hits an EOF unless you know that you've reached the end 
> of the buffer.
> 
> On Tue, Aug 9, 2022 at 12:59 PM Bert JW Regeer <[email protected] 
> <mailto:[email protected]>> wrote:
> Some WSGI servers pass you the raw file descriptor as wsgi.input, but this is 
> not guaranteed (wsgiref does for instance). Instead you should return an 
> iterator that can be read incrementally so that your WSGI server can chunk 
> responses.
> 
> 
> 
>> On Aug 9, 2022, at 10:38, Mikko Ohtamaa <[email protected] 
>> <mailto:[email protected]>> wrote:
>> 
>> Hi all,
>> 
>> I'd like to stream dynamically generated Parquet-files from Pyramid server. 
>> Parquet library itself offers writing to any file-like object. I am aware of 
>> app_iter and FileResponse interfaces in Pyramid. However, does Pyramid (or 
>> any example or utility class) offer a Python file-like interface, where I 
>> could just dynamically .write() stuff?
>> 
>> Br,
>> Mikko
>> 
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "pylons-discuss" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] 
>> <mailto:[email protected]>.
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/pylons-discuss/CAK8RCUudomfEGYnqAUk57XgOvatDLtFGGk%2Be5tFzu0w81Ez4Lg%40mail.gmail.com
>>  
>> <https://groups.google.com/d/msgid/pylons-discuss/CAK8RCUudomfEGYnqAUk57XgOvatDLtFGGk%2Be5tFzu0w81Ez4Lg%40mail.gmail.com?utm_medium=email&utm_source=footer>.
> 
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "pylons-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/pylons-discuss/2DB1D478-20A5-4F02-96BE-8F0EA792AFBF%400x58.com
>  
> <https://groups.google.com/d/msgid/pylons-discuss/2DB1D478-20A5-4F02-96BE-8F0EA792AFBF%400x58.com?utm_medium=email&utm_source=footer>.
> 
> 
> -- 
> 
> Michael
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "pylons-discuss" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to [email protected] 
> <mailto:[email protected]>.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/pylons-discuss/CAKdhhwHF%2BJjGydJ28bHneP1_GXvN_P%3DyN3W2FnSAQ_Cea-xbjw%40mail.gmail.com
>  
> <https://groups.google.com/d/msgid/pylons-discuss/CAKdhhwHF%2BJjGydJ28bHneP1_GXvN_P%3DyN3W2FnSAQ_Cea-xbjw%40mail.gmail.com?utm_medium=email&utm_source=footer>.

-- 
You received this message because you are subscribed to the Google Groups 
"pylons-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/pylons-discuss/E70BB1DE-7B0B-4A0B-AE57-DB5F9F7DE15A%40luhn.com.

Reply via email to