import os import boto3 import time import requests from celery import shared_task from celery.utils.log import get_task_logger from api.celery import celery_app logger = get_task_logger(__name__) aws_access_key_id = os.environ.get("AWS_ACCESS") aws_secret_access_key = os.environ.get("AWS_SECRET") @celery_app.task def upload_file(file_id): from .updater import tg_bot_updater_instance tg_bot_updater_instance.my_queue.put({"name": "admin_get_image", "queryset": file_id}) response = None timer = 30 while timer > 0: sleeping = 1 timer -= sleeping time.sleep(sleeping) if file_id in tg_bot_updater_instance.return_values: response = tg_bot_updater_instance.return_values[file_id] del tg_bot_updater_instance.return_values[file_id] break if response: r = requests.get(response, stream=True) s3 = boto3.client( service_name="s3", endpoint_url="https://s3.ru-1.storage.selcloud.ru", aws_access_key_id=aws_access_key_id, aws_secret_access_key=aws_access_key_id, ) s3.upload_fileobj(r.raw) logger.info("123") logger.info(file_id)