youtube-microservice

Примечание: сервис не имеет каких либо ограничении с точки зрения верификации => её нужно реализовать самому, как пример доступ к API только через внутренний IP адрес или составить белый список IP, который может взаимодействовать через Traefik/NGINX

uv

curl -LsSf https://astral.sh/uv/install.sh | sh

Deno

curl -fsSL https://deno.land/install.sh | sh

Redis

sudo apt install redis

Environment

  • Переименовать .env.example в .env
  • Добавить конфигурацию для Redis (объязательно)
  • По желанию добавить (если включен в app.core.config работу с S3 как uploader_backend) конфигурацию для S3

Конфигурация для systemd

  • Получить полный путь к директории проекта
pwd
# /home/.../youtube-microservice
  • Получить полный путь к uv
which uv
# /home/.../.local/bin/uv

Для FastAPI (/etc/systemd/system/fastapi-service.service):

[Unit]
Description=FastAPI Service
After=network.target

[Service]
Type=simple
User=your_username  # Замените на имя вашего пользователя
WorkingDirectory=/path/to/your/project  # Замените на путь к проекту
ExecStart=/usr/bin/uv run fastapi run --host 0.0.0.0 --port 1234
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Для Celery (``):

[Unit]
Description=Celery Worker
After=network.target fastapi-service.service  # Зависимость от FastAPI (опционально)

[Service]
Type=simple
User=your_username  # Замените на имя вашего пользователя
WorkingDirectory=/path/to/your/project  # Замените на путь к проекту
ExecStart=/usr/bin/uv run celery -A app.core.celery.celery_app worker --loglevel=info
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal

[Install]
WantedBy=multi-user.target

Активация и запуск

# Перезагружаем конфигурацию systemd
sudo systemctl daemon-reload

# Включаем автозапуск при загрузке системы
sudo systemctl enable fastapi-service.service
sudo systemctl enable celery-worker.service

# Запускаем сервисы
sudo systemctl start fastapi-service.service
sudo systemctl start celery-worker.service

Мониторинг и управление

  • Проверить статус:
sudo systemctl status fastapi-service.service
sudo systemctl status celery-worker.service
  • Посмотреть логи:
sudo journalctl -u fastapi-service.service -f
sudo journalctl -u celery-worker.service -f
  • Остановить сервис:
sudo systemctl stop fastapi-service.service
  • Перезапустить сервис:
sudo systemctl restart celery-worker.service
Description
Микросервис для загрузки видео с ютуба и последующей её выгрузки на локальный диск/s3
Readme 270 KiB
Languages
Python 100%