Anonymous
Я хочу использовать boto3 в асинхронной функции, Python
Сообщение
Anonymous » 15 янв 2025, 03:24
Я разрабатываю веб-скребок в драматурге и хочу асинхронно загружать изображения в aws-s3.
но boto3 не является асинхронной функцией.. как это исправить? >
Код: Выделить всё
class Boto3:
def __init__(self, key, id):
self.S3 = boto3.client('s3', aws_access_key_id=aws_key_id, aws_secret_access_key=aws_secret)
def upload_stream(self, stream, bucket_name, key):
self.S3.put_object(Body=stream, Bucket=bucket_name, Key=key)
...
...
class Scraper:
def __init__(self, key, id):
self.S3 = boto3.client('s3', aws_access_key_id=id, aws_secret_access_key=key)
asnyc _save_image(res):
buffer = await res.body()
# S3.put_object is not an async function.
self.S3.put_object(
Body=buffer,
Bucket=bucket_name,
Key=bucket_key,
)
async def scrape():
playwright = await async_playwright().start()
browser = await playwright.chromium.launch( headless = True, devtools = False )
page = browser.new_page()
page.on('response', _save_image)
await page.goto('https://www.example.com')
scraper = Scraper(key, id)
asyncio.run(scraper.scrape())
self.S3.put_object: эта функция не является asnyc, поэтому нужно изменить ее с помощью асинхронной версии.
Как это исправить?
Заранее спасибо.
Подробнее здесь:
https://stackoverflow.com/questions/720 ... ion-python
1736900694
Anonymous
Я разрабатываю веб-скребок в драматурге и хочу асинхронно загружать изображения в aws-s3. но boto3 не является асинхронной функцией.. как это исправить? > [code] class Boto3: def __init__(self, key, id): self.S3 = boto3.client('s3', aws_access_key_id=aws_key_id, aws_secret_access_key=aws_secret) def upload_stream(self, stream, bucket_name, key): self.S3.put_object(Body=stream, Bucket=bucket_name, Key=key) ... ... class Scraper: def __init__(self, key, id): self.S3 = boto3.client('s3', aws_access_key_id=id, aws_secret_access_key=key) asnyc _save_image(res): buffer = await res.body() # S3.put_object is not an async function. self.S3.put_object( Body=buffer, Bucket=bucket_name, Key=bucket_key, ) async def scrape(): playwright = await async_playwright().start() browser = await playwright.chromium.launch( headless = True, devtools = False ) page = browser.new_page() page.on('response', _save_image) await page.goto('https://www.example.com') scraper = Scraper(key, id) asyncio.run(scraper.scrape()) [/code] self.S3.put_object: эта функция не является asnyc, поэтому нужно изменить ее с помощью асинхронной версии. Как это исправить? Заранее спасибо. Подробнее здесь: [url]https://stackoverflow.com/questions/72092993/i-want-to-use-boto3-in-async-function-python[/url]