43 lines
1.2 KiB
Python
43 lines
1.2 KiB
Python
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)
|