Я читаю файлы асинхронно, но сталкиваюсь с ошибками, говорящими, что ожидание разрешено только в асинхронной функции. Эта ошибка возникает, когда ключевое слово await используется внутри функции, которая не была помечена как async, но я пометил read_blob() как async
У меня нет проблем при запуске этого в блокноте .ipynb Jupiter (в котором я запускаю код ячейку за ячейкой последовательно), но когда я запускаю его в VSCode в .py, это ошибка.
Я читаю файлы асинхронно, но сталкиваюсь с ошибками, говорящими, что ожидание разрешено только в асинхронной функции. Эта ошибка возникает, когда ключевое слово await используется внутри функции, которая не была помечена как async, но я пометил read_blob() как async У меня нет проблем при запуске этого в блокноте .ipynb Jupiter (в котором я запускаю код ячейку за ячейкой последовательно), но когда я запускаю его в VSCode в .py, это ошибка. [code]from azure.storage.blob.aio import ContainerClient import asyncio from azure.core.exceptions import ResourceNotFoundError from io import StringIO, BytesIO
class AsyncContainerClient(ContainerClient): async def read_blob(self, blob_name: str, add_blob_name_col=False, add_blob_date_col=False, preprocessing_func=None, zip_regex=r'.+\.gz$', csv_regex='.+\.csv(\.gz)?$', parquet_regex='.+\.parquet$', regex_string=None, **kwargs): assert isinstance(blob_name, str), f'{blob_name} is not a string'
try: blob = (await self.download_blob(blob_name))
with BytesIO() as byte_stream: await blob.readinto(byte_stream) byte_stream.seek(0) return pd.read_parquet(byte_stream, engine='pyarrow') except ResourceNotFoundError: return 0
test_dirs = ["models1/model.parquet", "models2/model.parquet", "models3/model.parquet"] res = await asyncio.gather(*(acc.read_blob(f) for f in test_dirs)) [/code] [img]https://i.sstatic.net/jKVeO.png[/img]