Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Языки программирования
  4. Python
  5. Автоматизация деплоя Python-скриптов с Smolagents на VPS: cron + SQLite DIY-гайд

Автоматизация деплоя Python-скриптов с Smolagents на VPS: cron + SQLite DIY-гайд

Запланировано Прикреплена Закрыта Перенесена Python
cronsmolagentsавтоматизация
1 Сообщения 1 Постеры 14 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • kirilljsxK Не в сети
    kirilljsxK Не в сети
    kirilljsx
    js
    написал отредактировано kirilljsx
    #1

    Обложка: Как автоматизировать деплой Python-скриптов с Smolagents на VPS с cron и SQLite: DIY-гайд для пет-проектов

    Проекты на Python с ИИ-агентами типа Smolagents - это огонь, но вручную деплоить и запускать на VPS каждый раз - сплошная рутина. В этом гайде разберем, как настроить автоматический деплой скриптов с cron и SQLite для хранения состояний агентов. Получится надежная автоматизация для парсеров, ботов или аналитики - без CI/CD-оверкилла, чисто DIY для соло-девов.

    Зачем это нужно? Экономит часы на ручном пуше кода, перезапусках и проверках. Скрипты сами обновляются, агенты Smolagents пашут по расписанию, данные в SQLite всегда под рукой. Идеально для фриланс-тасков или сайд-хаслов, где не хочется заморачиваться с GitLab CI.

    Готовим VPS и окружение для Smolagents

    Сначала задеплоим базовую среду на серваке. VPS на Ubuntu или Debian - стандарт, подключаемся по SSH и обновляем пакеты. Smolagents - это легкие ИИ-агенты на Python, которые интегрируются по API с моделями типа Grok или Llama, хранят состояние в SQLite. Устанавливаем Python 3.10+, pip и git - без этого никуда.

    Создаем директорию проекта, клонируем репозиторий с агентом и активируем виртуальное окружение. Важно: используем абсолютные пути везде, cron их любит. Тестируем скрипт вручную - пусть агент Smolagent спарсит данные, запишет в БД и выйдет чисто. Если крашится - фиксим зависимости сразу, чтоб потом не копаться в логах.

    Вот базовая последовательность шагов:

    • apt update && apt install python3 python3-pip python3-venv git sqlite3 -y
    • mkdir ~/smolagents-deploy && cd ~/smolagents-deploy
    • git init (или git clone ваш репозиторий)
    • python3 -m venv venv && source venv/bin/activate
    • pip install smolagents sqlite3 requests (добавьте нужные либы)

    Нюанс: в venv интерпретатор лежит в ~/smolagents-deploy/venv/bin/python, используйте which python после активации.

    Команда Описание Почему важно
    apt install … Установка базовых пакетов Без sqlite3 агенты не сохранят состояние
    python3 -m venv Виртуальное окружение Избегаем конфликтов версий
    pip install smolagents Ключевой пакет Агенты для ИИ-тасков

    Настраиваем скрипт агента с SQLite

    Скрипт для Smolagents - это сердце системы. Агент мониторит Reddit или парсит новости, сохраняет в SQLite таблицу с промптами и результатами. Пишем простой Python-файл: подключаем БД, запускаем агента с задачей, логируем вывод. Cron будет его пушить по расписанию - раз в час или ежедневно.

    Пример: агент анализирует тренды ИИ с Reddit, пишет summary в БД. Добавляем обработку ошибок, чтоб не падал весь цикл. Тестируем: python agent.py - должно создать /data/agent.db и заполнить таблицу. Логи в отдельный файл, чтоб cron не глотал stdout.

    Полный код скрипта agent.py:

    #!/usr/bin/env python3
    import sqlite3
    import smolagents as smol
    from datetime import datetime
    
    # Инициализация SQLite
    db_path = '/home/user/smolagents-deploy/data/agent.db'
    conn = sqlite3.connect(db_path)
    c = conn.cursor()
    c.execute('''CREATE TABLE IF NOT EXISTS tasks (id INTEGER PRIMARY KEY, prompt TEXT, result TEXT, timestamp TEXT)''')
    
    # Запуск Smolagent
    agent = smol.Agent('reddit-trends')
    result = agent.run('Анализируй свежие ИИ-посты с Reddit')
    
    # Сохранение
    c.execute("INSERT INTO tasks (prompt, result, timestamp) VALUES (?, ?, ?)", ('reddit-trends', result, datetime.now().isoformat()))
    conn.commit()
    conn.close()
    print(f"Задача выполнена: {result[:100]}...")
    
    • Права на файл: chmod +x agent.py
    • Директория data: mkdir data && chown user:user data
    • Логирование в cron: >> /home/user/smolagents-deploy/agent.log 2>&1

    Ключевой момент: Smolagents требует API-ключ от провайдера ИИ - храните в .env и загружайте через python-dotenv.

    Деплой и cron: автоматический запуск агента

    Деплой - это git pull + pip install -r requirements.txt + перезапуск. Пишем wrapper-скрипт deploy.sh, который все это делает. Cron его запускает по расписанию: например, в 3 утра git pull свежий код, обновляем deps и тестим агента.

    Без CI/CD это проще: SSH-ключ для git, cron-джоб с полными путями. Если скрипт меняется - пушим в репозиторий, cron сам подхватит. Мониторим логи: tail -f agent.log - увидим, что агент Smolagents отработал.

    Содержимое deploy.sh:

    #!/bin/bash
    cd /home/user/smolagents-deploy
    source venv/bin/activate
    git pull origin main
    pip install -r requirements.txt -q
    python agent.py >> agent.log 2>&1
    echo "Deploy at $(date)" >> deploy.log
    

    Настройка cron:

    1. crontab -e
    2. Добавьте: 0 3 * * * /home/user/smolagents-deploy/deploy.sh
      • Это ежедневно в 3:00
    3. crontab -l - проверьте список
    Расписание Пример crontab Для чего
    Ежедневно 3:00 0 3 * * * Полный деплой и запуск
    Каждый час 0 * * * * Мониторинг агента
    Каждые 10 мин */10 * * * * Легкие задачи

    Проверяйте статус: systemctl status cron - должен быть active.

    Отладка и продвинутые фичи для пет-проектов

    Проблемы бывают: cron не видит venv, git pull фейлится без ключей, SQLite забита. Логи - ваш лучший друг, добавьте уведомления по email или в Telegram-бот. Для продвинутого - systemd для daemon-режима, если агент должен висеть постоянно.

    Тестируем: вручную запустите deploy.sh, гляньте БД sqlite3 data/agent.db "SELECT * FROM tasks". Если все ок - масштабируйте: добавьте несколько агентов в один скрипт. На Reddit хвалят комбо cron + SQLite за простоту в пет-проектах.

    • Общие ошибки: Относительные пути - используйте абсолютные
    • Мониторинг: grep ERROR agent.log
    • Бэкапы: 0 2 * * 0 sqlite3 agent.db .dump > backup_$(date +%F).sql в cron

    Фича: Интегрируйте APScheduler внутри скрипта для подзадач - cron для деплоя, scheduler для интервалов.

    Масштаб дальше: от DIY к бизнес-таскам

    С такой настройкой пет-проект на Smolagents готов к бою: агенты сами парсят, анализируют, пишут в SQLite. Осталось доработать дашборд на Flask для просмотра данных из БД - 30 минут кода. Или хук в GitHub Actions для уведомлений о фейлах.

    Думаю над комбо с Celery для асинхронных агентов - cron хорош для простоты, но для 10+ задач лучше очередь. Следите за релизами Smolagents, там фичи для multi-agent систем на подходе. В общем, автоматизация рулит - кодит быстрее ручной мороки.

    1 ответ Последний ответ
    0

    Здравствуйте! Похоже, вас заинтересовала эта беседа, но у вас ещё нет аккаунта.

    Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.

    С вашими комментариями этот пост мог бы стать ещё лучше 💗

    Зарегистрироваться Войти

    Категории

    • Главная
    • Новости
    • Фронтенд
    • Бекенд
    • Языки программирования

    Контакты

    • Сотрудничество
    • info@exlends.com

    © 2024 - 2026 ExLends, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы