Есть ли способ запустить pandas run_sql_query асинхронно? - PullRequest
1 голос
/ 27 мая 2020

Я читаю данные из Postgres БД с запросами n. Выполнение каждого из этих запросов в БД может занять значительное количество времени, поэтому я хотел бы выполнить их асинхронно.

Я пытаюсь выполнить sh это через модуль async, но безуспешно

class Test:

    async def collect_items(self, conn_):
        await pd.read_sql_query(items_query_string, conn_)

    async def test_items(self, conn_):
        self.item_df = self.collect_items(conn_)

    async def collect_stockout(self, conn_):
        await pd.read_sql_query(stockout_query_string), conn_)

    async def test_stockout(self, conn_):
        self.so_df = self.collect_stockout(conn_)

    async def _collect_all_async(self, conn_):
        await asyncio.gather(self.test_items(conn_), self.test_stockout(conn_))

    def collect_all(self, conn_):
        asyncio.run(self._collect_all_async(conn_))

Однако, когда я вызываю collect_all, я хотел бы дождаться завершения всех запросов, а это не тот случай, поскольку он немедленно возвращается без правильной настройки self.item_df и self.so_df

Почему так?

...