## Сервис обработки изображений Данный сервис принимает на вход изображения типа `png` или `jpeg` и необходимую ширину выходного изображения в пикселях(Опционально. По умолчанию 250 пикселей), изменяет размер изображения до указанной ширины сохраняя пропорции, загружает итоговое изображение на сервер AWS S3 и возвращает ссылку на загруженный файл. ## Установка Перед началом использования стоит убедиться, что у вас имеется готовый `AWS S3` бакет. Так же для работы `Celery` потребуется сервер `Redis`. Он может быть поднят отдельно, либо сразу со всем сервисом в докере. В корне проекта создаём `.env` файл и заполняем в нём необходимые поля по примеру из `.env_template` Далее устанавливаем всё необходимое. ```shell pip install -r requirements.txt ---> 100% ``` В терминале пишем ```shell celery -A app.tasks.celery:celery worker --loglevel=INFO ``` В другом терминале пишем ```shell uvicorn app.main:app --reload ``` Теперь `API` доступен на http://localhost:8000/api/upload_image и документация на http://localhost:8000/docs ## Установка в docker Так же создаём `.env` файл и заполняем его всем необходимым В поле `REDIS_HOST` указываем `redis` В терминале пишем ```shell docker compose build docker compose up -d ``` `API` будет доступен на порте `9000` ## Пример использования ```python import requests def send_image(image_path: str, target_width: int) -> None: with open(image_path, 'rb') as file: file_data = file.read() url = f'http://localhost:9000/api/upload_image/?target_width={target_width}' response = requests.post(url, files={'file': file_data}) if response.status_code == 200: link = response.json()["resized_image_link"] print("Файл успешно отправлен!", link, sep="\n") else: print("Ошибка при отправке файла:", response.status_code, response.json()["detail"]) if __name__ == "__main__": send_image("image.png", 300) ```