aws cloud add

This commit is contained in:
Kseninia Mikhaylova 2024-08-08 17:08:49 +03:00
parent c74a81c160
commit accb2c8c50
2 changed files with 25 additions and 24 deletions

View File

@ -199,3 +199,8 @@ TGBOT = {
"BASE_URL": NGROK_TEMP, "BASE_URL": NGROK_TEMP,
"WEBHOOK_URL": f"webhook/{os.environ.get('TG_TOKEN')}", "WEBHOOK_URL": f"webhook/{os.environ.get('TG_TOKEN')}",
} }
SELECTEL = {
"access": os.environ.get("AWS_ACCESS"),
"secret": os.environ.get("AWS_SECRET"),
}

View File

@ -2,11 +2,13 @@ import os
import boto3 import boto3
import time import time
import requests import requests
from django.conf import settings
from celery import shared_task from celery import shared_task
from celery.utils.log import get_task_logger from celery.utils.log import get_task_logger
from api.celery import celery_app from api.celery import celery_app
from .models import TmcField
logger = get_task_logger(__name__) logger = get_task_logger(__name__)
aws_access_key_id = os.environ.get("AWS_ACCESS") aws_access_key_id = os.environ.get("AWS_ACCESS")
@ -14,29 +16,23 @@ aws_secret_access_key = os.environ.get("AWS_SECRET")
@celery_app.task @celery_app.task
def upload_file(file_id): def upload_file(file_id):
from .updater import tg_bot_updater_instance obj = TmcField.objects.filter(file_id=file_id)
tg_bot_updater_instance.my_queue.put({"name": "admin_get_image", "queryset": file_id}) if not obj:
return
response = None logger.info(f"start upload file {file_id}")
timer = 30 file_url = requests.get(f"https://api.telegram.org/bot{settings.TGBOT['TOKEN']}/getFile?file_id={file_id}")
while timer > 0: file_json = file_url.json()
sleeping = 1 response = f"https://api.telegram.org/file/bot{settings.TGBOT['TOKEN']}/{file_json['result']['file_path']}"
timer -= sleeping logger.info(f"get tg url {response}")
time.sleep(sleeping) r = requests.get(response, stream=True)
if file_id in tg_bot_updater_instance.return_values: s3 = boto3.client(
response = tg_bot_updater_instance.return_values[file_id] service_name="s3",
del tg_bot_updater_instance.return_values[file_id] endpoint_url="https://s3.ru-1.storage.selcloud.ru",
break aws_access_key_id=settings.SELECTEL['access'],
aws_secret_access_key=settings.SELECTEL['secret'],
)
s3.upload_fileobj(r.raw, 'inventorization', file_id)
obj.image_aws_url = file_id
obj.save()
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)