Разработать python агента для операций с файлами

30 000 руб. за проект
19 февраля 2024, 22:39 • 11 откликов • 133 просмотра
Задача Существует веб-базированная Система для управления медиа. Необходимо реализовать локального агента, который будет взаимодействовать с Системой по REST API.

Необходимо написать скрипт для работы агента, который будет принимать запросы от Системы для скачивания файлов в локальное или сетевое местоположение по указанному пути.

Есть продуманное и подробно описанное ТЗ. Альтернативные предложения по реализации обсужаются

Основные задачи и характеристики агента
  1. Авторизация в системе и управление жизненным циклом токенов:
    1. Агент должен автоматически авторизовываться в системе, используя предоставленные учетные данные (логин и пароль) для получения accessToken и refreshToken.
    2. Агент должен автоматически обновлять accessToken, используя refreshToken, до истечения его срока действия, чтобы обеспечить непрерывный доступ к ресурсам системы без необходимости ручной переавторизации.
  2. Обработка запросов на перемещение файлов:
    1. Агент должен принимать HTTP POST запросы на скачивание файлов, содержащие информацию о имени файла и пути к директории назначения, как в локальном, так и в сетевом хранилище.
    2. Для каждого запроса агент помещает его в управляемую очередь, обрабатывая файлы в соответствии с их приоритетом и доступностью.
  3. Перемещение файлов:
    1. После получения запроса на скачивание, агент должен запросить доступ к файлу в S3, проверить его существование и доступность, а затем выполнить скачивание файла в указанную директорию.
    2. Агент должен поддерживать возможность остановки скачивания на любом этапе, если поступит соответствующая команда от системы.
  4. Отправка результатов выполнения операции:
    1. После каждой операции скачивания, агент должен отправлять в систему отчет о статусе операции (успех, ошибка), включая детали ошибки, если таковая произошла.
  5. Логирование:
    1. Агент должен вести детализированный журнал своей работы, включая информацию о полученных запросах, процессе скачивания, возникших ошибках и изменении статусов операций. Логи должны быть доступны для анализа в случае необходимости диагностики или отладки.
  6. Обработка изменений приоритета скачивания:
    1. Система может отправлять агенту запросы на изменение приоритета уже запланированных к скачиванию файлов. Агент должен уметь динамически изменять порядок обработки файлов в своей очереди в соответствии с новыми приоритетами.
  7. Проверка доступа локальным и к сетевым дискам
    1. Система может отправлять агенту запросы на проверку доступа к местоположениям, расположенным по сетевому адресу, предоставляя ip, путь, логин и пароль. Агент должен поддерживать механизм проверки аутентификационных данных (логин и пароль), предоставленных пользователем для доступа к сетевым ресурсам. Это включает в себя валидацию предоставленных учетных данных посредством попытки установления соединения с указанным ресурсом перед выполнением операций скачивания. В случае неудачи аутентификации, агент должен немедленно уведомить систему о невозможности доступа, предоставив соответствующий код ошибки и описание проблемы.
      Помимо авторизации, необходимо убедиться, что указанный путь существует и доступен для операций чтения/записи. Это включает в себя проверку наличия целевой директории или файла по сетевому адресу. В зависимости от используемой операционной системы и инструментов, процесс может немного отличаться, но общий принцип следующий:
    2. Система также может запрашивать у агента проверку доступности локальных ресурсов. В этом контексте агент обязан поддерживать функционал для проверки доступности указанных локальных путей, убедившись, что они доступны для чтения и записи перед выполнением заданий по скачиванию или загрузке файлов

Алгоритм работы
  1. Получить accessToken и refreshToken из эндпоинта системы: /test/api/auth/login
  2. Ожидать получения запроса на скачивание файла с указанным именем файла и именем директории.
    1. Полученный запрос положить в конец очереди сообщений. В случае, если у сообщений в очереди одинаковый приоритет - очередь работает в режиме FIFO.
  3. Проверять очередь сообщений на наличие новых сообщений. Первым брать в работу сообщение с наивысшим приоритетом.
  4. Запросить ссылку на файл из S3.
  5. Проверяем существование файла в S3.
    1. Если файл не существует - вернуть соответствующую ошибку.
  6. Проверить доступность директории.
    1. Если директория недоступна - вернуть соответствующую ошибку.
  7. Выполнить скачивание если п. 4.1 и 5.1 не вызывают ошибок.
    1. Если в директории уже существовал файл с таким названием - перезаписать его.
  8. После завершения скачивания вернуть сообщение об успехе или ошибку.
  9. Логировать успешное скачивание или ошибки при работе скрипта.

    С полным ТЗ можно ознакомиться по ссылке: https://docs.google.com/document/d/13t3RdXOSzSVsIK...