Hey Michael,

The key thing is that the threads are all managed by gRPC's C++ implementation. 
On the server side, the C++ libraries underneath handle incoming requests, 
encoding/decoding responses, etc. all concurrently without calling into Python. 
Arrow calls into Python only for the actual RPC endpoint logic. This is all 
multithreaded and within a single process. (In fact, you probably should avoid 
fork() and things built on top of it, like the multiprocessing module - it will 
not play well with the C++-level libraries.) Threading is all managed by the 
C++ library and so there is not any one place to look at, is there something 
specific you were looking for?

Best,
David

On Tue, Sep 7, 2021, at 18:45, Michael Ark wrote:
> I am relatively new to Python and Arrow Flight. I want to understand how 
> Arrow Flight works with multiple clients making multiple requests to a single 
> server. It seems like Arrow Flight handles concurrency. Is it multithreaded, 
> but single process? How are the threads managed? Where can I find this logic? 
> When I try to track the threads in the server with logging, I get 
> DummyThreads, so it’s not very helpful.
> 
> #arrow-flight
> 
> Thanks! Appreciate any help you can provide.

Reply via email to