3.9 KiB
3.9 KiB
Миграция с Node.js на Python
Зачем переходить на Python?
- Email работает из коробки - нативная поддержка SMTP без проблем с AWS SDK
- Проще настройка - меньше зависимостей и конфликтов версий
- Лучшая типизация - Pydantic для валидации
- Совместимость - использует ту же MongoDB, API полностью совместимо
Шаги миграции
1. Остановите Node.js версию
# Если запущено через PM2
pm2 stop moderation-backend
# Если запущено через Docker
docker stop nakama-moderation-backend
# Если запущено вручную
# Найдите процесс и остановите его
ps aux | grep "moderation/backend"
kill <PID>
2. Установите Python зависимости
cd moderation/backend-py
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
3. Проверьте .env
Убедитесь, что в корневом .env (nakama/.env) настроены:
# Email (обязательно!)
EMAIL_PROVIDER=yandex
YANDEX_SMTP_HOST=smtp.yandex.ru
YANDEX_SMTP_PORT=465
YANDEX_SMTP_SECURE=true
YANDEX_SMTP_USER=ваш_email@yandex.ru
YANDEX_SMTP_PASSWORD=ваш_пароль_приложения
EMAIL_FROM=noreply@nakama.guru
OWNER_EMAIL=admin@example.com
# Модерация
MODERATION_PORT=3001
MODERATION_BOT_TOKEN=ваш_токен
MODERATION_OWNER_USERNAMES=glpshchn00
# MongoDB (та же база!)
MONGODB_URI=mongodb://103.80.87.247:27017/nakama
4. Запустите Python версию
# Development
python main.py
# Или с auto-reload
uvicorn main:app --reload --host 0.0.0.0 --port 3001
# Production
uvicorn main:app --host 0.0.0.0 --port 3001 --workers 4
5. Проверьте работу
# Health check
curl http://localhost:3001/health
# API
curl http://localhost:3001/api/moderation-auth/config
6. Обновите PM2 (опционально)
pm2 delete moderation-backend
pm2 start "uvicorn main:app --host 0.0.0.0 --port 3001 --workers 2" \
--name moderation-backend-py \
--cwd /path/to/nakama/moderation/backend-py \
--interpreter python3
Откат на Node.js
Если нужно вернуться:
# Остановите Python версию
pm2 stop moderation-backend-py
# Запустите Node.js версию
cd moderation/backend
npm start
Проверка совместимости
Фронтенд модерации работает с обеими версиями без изменений:
- API endpoints идентичны
- Формат данных совместим
- WebSocket протокол тот же
Решение проблем
Email не отправляется
Проверьте:
- Используете ли пароль приложения Yandex (не основной пароль)
- Правильность email адреса в
YANDEX_SMTP_USER - Логи при запуске - должна быть строка
[Email] Настройка SMTP
401 Unauthorized
- JWT токены те же, что и в Node.js версии
- Cookies с теми же именами
- Проверьте
JWT_ACCESS_SECRETв.env
MongoDB connection error
- Используется та же
MONGODB_URIиз.env - Проверьте доступность MongoDB:
mongosh <MONGODB_URI>
Производительность
Python версия с uvicorn и 4 workers показывает сопоставимую или лучшую производительность по сравнению с Node.js.
Поддержка
При проблемах создайте issue или обратитесь к администратору.