This works fine in single threaded applications, but when the client is embedded in multi-threaded applications, race conditions are invoked against the http transport object, and this causes user applications to fail.
I don't think the libraries we're have any native threading support, but it's worth a few minutes of googling.
Most likely the expectation for this ticket is to update the client to dynamically create a new graphql client and http transport for every request to avoid this problem.
Right now the API client creates one HTTP transport and one GQL client object for the lifetime of the client object:
https://github.com/chanzuckerberg/cryoet-data-portal/blob/main/client/python/cryoet_data_portal/src/cryoet_data_portal/_client.py#L32-L46
This works fine in single threaded applications, but when the client is embedded in multi-threaded applications, race conditions are invoked against the http transport object, and this causes user applications to fail.
I don't think the libraries we're have any native threading support, but it's worth a few minutes of googling.
Most likely the expectation for this ticket is to update the client to dynamically create a new graphql client and http transport for every request to avoid this problem.