Below is relevant snippet from my code. I am following what is mentioned in the documentation. Based on relevant question, I feel too many threads may be an issue. But, I am not sure, how can I limit those. I can't use run_in_executor + ThreadPoolExecutor because handling pandas dataframe is difficult in that. Can anyone advise how to solve this blocking issue?
app = FastAPI()
async def foo(param_1, param_2):
df_a, df_b = await run_in_threadpool(bar, param_1, param_2)
df = df_a.merge(df_b, on='name', how='left')
return df
@app.get('/get_foo')
async def get_price_comparison():
for param_1, param_2 in list_of_required_entry:
tasks.append(asyncio.create_task(foo(param_1, param_2))
data = await asyncio.gather(*tasks)
data_dataframe = reduce(lambda left, right: pd.merge(left, right, on='name', how='left'), data)
json_data = data_dataframe.to_dict(orient='records')
return json_data