Smarty

  1. Домой
  2. Документы
  3. Smarty
  4. Конфигурация и обслуживание Smarty
  5. Служебные и регулярные команды

Служебные и регулярные команды

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

Вместо <settings name> в командах укажите ваш файл конфигурации, который находится по адресу /etc/microimpuls/smarty/.

Содержание показать

Общие команды

Обновление кеша

Команда:

smarty_manage flushall --settings=settings.<settings name>

В Smarty присутствует кеш двух видов:

  • защищенный кеш — это данные, которые записываются в кеш ради скорости обращения к ним и не подлежат очистке при обновлении: отметки просмотренности контента, ключи видеосерверов и прочее.
  • обычный кеш — временно сохраненные данные для ускорения работы системы: сохраненные ответы API от сервера.

По умолчанию команда flushall очищает только обычный кеш.

Параметры:

--flush-protected — для принудительной очистки защищенного кеша.

smarty_manage flushall --flush-protected --settings=settings.<settings name>

Тестирование производительности системы

Команда:

smarty_manage performance_test --settings=settings.<settings name>

Проверка проводится в зависимости от выбранной цели тестирования:
--redis – скорость записи, чтения и удаления данных.
--database – скорость создания и чтения данных.
--proc – время выполнения сортировки массива данных.

После выполнения тестов выводится время выполнения каждого теста с выбранным размером данных и примерное количество запросов/операций в секунду (rps).

Параметры:
-s, --small – тестирование производительности осуществляется с малым количеством данных.
-m, --mid — тестирование производительности осуществляется со средним количеством данных.
-b, --big — тестирование производительности осуществляется с большим количеством данных.
-r, --redis – при наличии данного флага будет проведена проверка redis.
-db – при наличии данного флага будет проведена проверка БД.
-p, --proc – при наличии данного флага будет проведена проверка производительности процессора.
-a, --all – флаг полной проверки системы (включает в себя –r, -db, -p).

Примеры использования команды:
Тест нагрузки процессора с большим количеством данных:

smarty_manage performance_test --proc --big --settings=settings.<settings name>

/usr/share/microimpuls/smarty-lite/manage.py performance_test —proc —big —settings=settings.smarty-lite

Processor test
Sorting values in test list…
time: 242.4418 22914546.2145 rps

Тест полной нагрузки системы со средним количеством данных:

smarty_manage performance_test -a --mid --settings=settings.<settings name>

/usr/share/microimpuls/smarty-lite/manage.py performance_test -a —mid —settings=settings.smarty-lite

Redis test
Setting value in redis…
time: 47.9694 10423.3085 rps
Receiving values from redis…
time: 46.3872 10778.8313 rps
Deleting values from redis…
time: 46.2279 10815.9741 rps

DB test
Creating value in db table…
time: 1.3785 362.7209 rps
Receiving values from db table…
time: 6.4660 7732.7368 rps

Processor test
Sorting values in test list…
time: 59.1231 23489591.2796 rps

Создание дампфайла для PostgreSQL

Команда:

smarty_manage dump_db_to_psql -o dumpfilename.psql -s smarty_psql --settings=settings.<settings name>

Команда создает дампфайл текущей БД Smarty для PostgreSQL.

Параметры:

-s (--psqldb) — название БД в PostgreSQL сервере.

-o (--dumpfile) — название файла, в который будет записан дамп текущей БД Smarty.

Абоненты

Списание/продление аккаунтов с помощью встроенного биллинга согласно расчетным периодам

Команда:

smarty_manage check_accounts --settings=settings.<settings name>

Команда осуществляет деактивацию аккаунтов, для которых подошел к концу расчетный период, а также производит списание средств и продление действующих аккаунтов. Рекомендуется запускать каждую ночь (см. Описание работы встроенного биллинга).

Удаление всех сессий авторизации всех аккаунтов для заданного Client ID

Команда:

smarty_manage delete_authkeys --client_id=<client_id> --settings=settings.<settings name> 

Внимание, выполнение команды приведет к логауту всех устройств.

Очистка лога действий абонента

Команда:

smarty_manage clear_customer_log --days=60 --settings=settings.<settings name>

Параметры:

--days — данный параметр обязателен и определяет, что при вызове команды будут удалены записи старше days дней.

Платежи

Команда совершения автоплатежей

Команда:

smarty_manage make_autopayments --settings=settings.<settings name>

Производит оплату для тех клиентов, у которых активен автоплатеж. Рекомендуется выполнять непосредственно перед командой check_accounts.

Параметры:

--use_pool — включает многопоточную обработку автоплатежей клиентов.

Команда валидации платежей

Команда:

smarty_manage check_payment_status --settings=settings.<settings name>

Выполняет проверку статуса платежа для платежных систем, у которых отсутствует автоматическая нотификация. На данный момент поддерживаются Fortebank и Payture.

Параметры:

--timeout_minutes — количество минут, по прошествии которых платеж считается «устаревшим» и более не проверяется.

Рассылка сообщений

Рассылка информационных сообщений на экраны устройств и e-mail о приближении срока деактивации/необходимости оплаты

Команда:

smarty_manage send_activation_expires_messages --client_id=<client_id> --days_count=<количество оставшихся дней> --settings=settings.<settings name>

Параметры:

--days_count — данный параметр обязателен и создает выборку из аккаунтов, срок до деактивации которых равен переданному параметру.

--send_sms — при указании данного параметра сообщения также будут рассылаться с помощью SMS в случае, если у абонента указан номер телефона. Рекомендуется запускать эту команду раз в сутки.

Пример использования команды:

Отправка SMS-уведомления о скором приближении срока деактивации аккаунтов у Клиента с ID=25:

smarty_manage send_activation_expires_messages --client_id 25 --days_count 3 --send_sms --settings=settings.<settings name>

Удаление старых недоставленных информационных сообщений

Команда:

smarty_manage clean_old_messages --days_count <количество дней> --hours <количество часов> --minutes <количество минут> --settings=settings.<settings name>

С помощью данной команды можно удалить сообщения определенной давности, которые являются неактуальными. Будут удалены как доставленные (без флага «Удалять после прочтения»), так и непрочитанные сообщения. При удалении учитывается дата создания сообщения. Если указать несколько параметров, то период суммируется в зависимости от переданных параметров.
Предупреждение: если не указать --days_count при выполнении команды, то берется значение параметра по умолчанию.

Параметры:

--days_count — отвечает за удаление сообщений, созданных X и более дней назад. По умолчанию 7.

--hours — отвечает за удаление сообщений, созданных X и более часов назад. По умолчанию 0.

--minutes — отвечает за удаление сообщений, созданных X и более минут назад. По умолчанию 0.

Пример использования команды:

Удаление сообщений, которые были созданы более 3,5 часов назад:

smarty_manage clean_old_messages --days_count=0 --hours=3 --minutes=30 --settings=settings.<settings name>

Повторная отправка SMS-сообщений, недоставленных с первого раза

Команда:

smarty_manage resend_sms --settings=settings.<settings name>

Рекомендуется запускать команду каждые 1-3 минуты. Поддерживается не всеми SMS-шлюзами.

Контент

Кеширование списка телеканалов для абонентских устройств

Команда:

smarty_manage cache_channel_list --settings=settings.<settings name>

Параметры:

--content_type — предназначен для разделения кеширования камер и каналов. Возможные значения: all, camera, channel. По умолчанию all.

Рекомендуется запускать эту команду каждую минуту. При пустом кеше списка телеканалов абоненту будет выдаваться сообщение, что список телеканалов пуст.

Создание подборки популярных телеканалов

Команда:

smarty_manage create_channel_selection_by_popularity --settings=settings.<settings name>

Предупреждение: для работы данной команды необходимо настроить модуль статистики телесмотрения.

Параметры:
--client_id – данный параметр обязателен и определяет идентификатор Client, для которого будет создана подборка.
--days_number – данный параметр обязателен и определяет количество дней, в течение которых стоит учитывать телесмотрение.
--criterion – данный параметр обязателен и определяет характеристику, по которой будет создана подборка. Возможные значения: watch_time (общее время просмотра каналов), watch_sessions (количество сессий просмотра каналов), average_watch_time (среднее время просмотра каналов), median_watch_time (медианное время просмотра).
--devices – параметр для создания подборки по определенным устройствам (по умолчанию подборка создается по всем устройствам).
--accounts_active – параметр позволяет создать подборку только на основе активных аккаунтов. Возможные значения: true, false. По умолчанию false.
--tariffs – выборка определенных тарифов для создания подборки (по умолчанию учитываются все тарифы).
--selection_size – параметр определяет размер создаваемой подборки. При отсутствии информации о достаточном количестве каналов происходит добавление каналов без статистики до нужного количества. По умолчанию 17.

Пример использования команды:

Создание для Client=1 подборки недельных популярных каналов по времени просмотра:

smarty_manage create_channel_selection_by_popularity --client_id=1 --days_number=7 --criterion=watch_time --settings=settings.<settings name>

Создание видео из архивных записей

Команда:

smarty_manage make_vodpvr --settings=settings.<settings name>

Команда позволяет создавать сущности типа «video» из архивных записей для наполнения видеотеки или архива.

Параметры:
--client_id – данный параметр обязателен и определяет идентификатор Client, для которого будут созданы видео из архивных записей.
--actual_time – время в часах. Видео будет создано только из тех архивных записей, которые точно будут доступны в течение времени, указанного в этом параметре.
--epg_category_ids – фильтр по категории передач, для которой будет создано видео.
--provider_id – id видеопровайдера, который будет установлен для созданных видео.
--tariff_ids – id тарифа, который будет установлен для созданных видео.
--filter_tariff_ids – фильтр по тарифу, с каналов которого будут созданы видео.
--epg_source_ids – фильтр по источнику EPG, с передач которого будут созданы видео.
--join_videos – данный параметр определяет количество ассетов, при которых фильм становится сериалом. Используется только в том случае, если в источнике EPG не передается информация о сезонах и сериях для передач.

Рекомендуется запускать команду раз в период, указанный в параметре actual_time. К примеру, для ежесуточной актуализации видео, созданных из архивных передач, следует запускать команду раз в сутки с параметром --actual_time=25 (дополнительный час отводится на работу команды).

Перенос отметок просмотренности фильмов в постоянную базу

Команда:

smarty_manage save_content_position --settings=settings.<settings name>

Запоминание позиции, на которой остановился пользователь при просмотре фильма, происходит через отправку актуальной позиции в Smarty из приложения каждые 30 секунд. Сохранять эту позицию каждый раз в БД довольно тяжелая операция, поэтому она по умолчанию сохраняется в защищенный кеш. Но так как кеш, даже защищенный, всё-таки временная сущность, а хранить историю просмотров пользователей важно длительное время — есть возможность переносить эти просмотры в основную базу с помощью команды save_content_position. Рекомендуется запускать хотя бы раз в сутки.

Параметры:

--save_db — флаг для переноса сохраненных позиций в БД. Не рекомендуется к использованию, т.к. при выполнении сильно нагружает БД.

--save_file — данный параметр определяет название файла (с расширением .gz), в который будут перенесены сохраненные позиции.

--client_ids — данный параметр определяет список идентификаторов client, для которых необходимо сохранить позиции. Предупреждение: не используется вместе с параметром --account_id.

--account_ids — данный параметр определяет список идентификаторов аккаунтов, для которых необходимо перенести позиции. Предупреждение: не используется вместе с параметром --client_id.

--account_actual_days — если аккаунт был активен в течение указанного количества дней, то его сохраненные позиции учитываются при переносе.

--chunk_size — определяет количество аккаунтов для одного SQL-запроса, чтобы немного снизить нагрузку на БД.

Примеры использования команды:

Сохранение меток просмотренности для client_id=1 в файле:

smarty_manage save_content_position --client_id=1 --save_file=example.gz --settings=settings.<settings name>

Сохранение меток просмотренности для account_id=100 в БД (с chunk_size=20):

smarty_manage save_content_position --account_id=100 --save_db --chunk_size=20 --settings=settings.<settings name>

Загрузка отметок просмотренности из постоянной БД в кеш

Команда:

smarty_manage restore_content_position --settings=settings.<settings name>

Параметры:

--load_db — флаг для переноса сохраненных позиций из БД. Не рекомендуется к использованию, т.к. при выполнении сильно нагружает БД.

--load_file — данный параметр определяет название файла (с расширением .gz), из которого будут загружены отметки просмотренности.

--client_ids — данный параметр определяет список идентификаторов client, для которых необходимо сохранить позиции. Предупреждение: не используется вместе с параметром --account_id.

--account_ids — данный параметр определяет список идентификаторов аккаунтов, для которых необходимо перенести позиции. Предупреждение: не используется вместе с параметром --client_id.

Примеры использования команды:

Загрузка меток просмотренности для client_id=1 из БД:

smarty_manage restore_content_position --client_id=1 --save_db --settings=settings.

Загрузка меток просмотренности для account_id=100 из файла:

smarty_manage restore_content_position --account_id=100 --load_file=example.gz --settings=settings.

Удаление истории просмотров фильмов для всех абонентов

Команда:

smarty_manage remove_viewed_content_history --settings=settings.<settings name>

Параметры:

--client_id — идентификатор Client, для абонентов которого нужно очистить историю просмотров.

 --days — просмотры старше данного количества дней следует очищать.

Команда позволяет удалить историю просмотров пользователей старше определенного количества дней, чтобы не хранить данные, например, годичной давности.

Кеширование списка стран с сортировкой по количеству фильмов

Команда:

smarty_manage cache_video_country_list --settings=settings.<settings name>

Данная команда нужна для отображения списка стран на экране фильтрации фильмов в интерфейсе приложения. Рекомендуется запускать раз в сутки. При пустом кеше TVMW API будет возвращать пустой список стран.

Генерация фидов по архивным записям

Команда:

smarty_manage cache_record_feed --client_id=<client_id> --settings=settings.<settings name>

Команда собирает и генерирует фиды по архивным записям. При указании параметра --client_id генерация будет происходить для определенного Client (в противном случае генерация будет произведена по всем имеющимся Client). Фиды доступны по адресу: smarty.example.com/tvmiddleware/record/feed/<client_id>.

Удаление актеров, у которых отсутствует привязка к фильмам, и/или их дубликатов

Команда:

smarty_manage remove_invalid_actors --settings=settings.<settings name>

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

Параметры:

--client_id — определяет идентификатор Client, в рамках которого будет произведена очистка.

--debug — при удалении в smarty_management.log будут записаны имена удаляемых актеров, а также путь до удаляемой фотографии.

--dublicate — удаление дубликатов актеров.

--dub_field — название поля, по которому определяются дубликаты. По умолчанию movie_db_id.

--fake — при добавлении данного параметра фактическое удаление актеров не происходит.

--filmless — удаление актеров, которые не привязаны к какому-либо фильму.

Предупреждение: если пропустить параметр --client_id, то очистка будет произведена по всем клиентам.

Пример использования команды:

Удаление актеров без фильмов и дубликатов:

smarty_manage remove_invalid_actors --dublicate --filmless --client_id=1 --debug --settings=settings.<settings name>

EPG

Импорт EpgChannel

Команда:

smarty_manage epg_channel_import --settings=settings.<settings name>

Команда загружает список каналов или обновляет список иконок из источника EPG (EpgService или любой источник в формате xmltv). Для запуска команды необходимы параметры --epg_import_id или --epg_source_name.

При импорте изображений по возможности создаются копии различных размеров, указанных в опции SMARTY_DEFAULT_ICON_SIZES.
Для обновления иконок определенного канала можно указать --epg_channel_id или --channel_id.

Параметры:

--epg_source_id — идентификатор EpgSource в Smarty, для которого необходимо произвести импортирование каналов.

--epg_source_name – имя EpgSource, для которого необходимо произвести импортирование каналов.

--epg_channel_id – идентификатор EpgChannel, для которого необходимо произвести обновление иконки. Находится в админке Django Smarty.

--force_import – параметр необходим для загрузки всех каналов из списка источника. При его указании игнорируются все другие параметры кроме --epg_source_id , --epg_source_name и --fix_duplicates.

--channel_id – идентификатор канала, для которого необходимо произвести обновление иконки. Находится в админке Smarty.

--reimport_icons – при указании данного параметра у импортированных каналов будет произведено обновление иконок.

Пример команды для импорта каналов:

smarty_manage epg_channel_import --epg_source_id=2 --force_import --settings=settings.<settings name> 

Импорт EPG

Команда:

smarty_manage epg_import --settings=settings.<settings name>

Команда необходима для загрузки списка программ передач. Если не произвести импорт EPG, то у абонента будет пустая программа передач и будет ограничен функционал сервиса.
Импорт можно выполнить как для всех каналов источника, добавив параметр --epg_source_id (--epg_source_name), так и для определенного канала, указав --epg_channel_id. Рекомендуется запускать импорт несколько раз в день для поддержания актуальности.

Параметры:

--epg_source_id – идентификатор EpgSource в Smarty, для которого необходимо произвести импортирование списка программ передач.
--epg_source_name – имя EpgSource, для которого необходимо произвести импортирование списка программ передач.
--epg_channel_id – идентификатор EpgChannel, для которого необходимо произвести импортирование списка программ передач.
--actual_days – предел количества дней, в котором программы считаются актуальными. Программы старше заданного значения считаются неактуальными и будут удалены в случае, если они имеются.
--create_content – при добавлении данного параметра параллельно импорту будут созданы подборки импортированных программ, это нужно для работы раздела «Архив». При отсутствии параметра --content_client_id подборки будут созданы для всех клиентов Smarty.
--content_client_id – при добавлении параметра создание подборок будет выполнено только определенному клиенту. Используется в связке с параметром --create_content.
--ignore_epg_import – при добавлении данного параметра команда не будет импортировать список программ передач. Используется в связке с параметром --create_content.
--start_date – параметр принимает дату, начиная с которой необходимо загрузить список программ передач. Передается в формате YYYY-MM-DD. С помощью этого параметра можно загрузить устаревшую программу передач, например, для наполнения раздела «Архив» прошедшими передачами. Предупреждение: параметр start_date приоритетнее, чем actual_days.
--force_reimport — предназначен для принудительного импорта EPG с игнорированием даты последнего обновления источника EPG.

--force_parser_handling — принудительно разрешает использовать передачу управления парсеру. При импорте происходит проверка даты последнего изменения в источнике EPG (в случае если произошли изменения, выполняется импорт). Необходим для процесса оптимизации импорта. Равносильно TVMW_EPG_IMPORT_ALLOW_PARSER_HANDLING=True.
--force_disable_parser_handling – принудительно запрещает использовать передачу управления парсеру. При добавлении параметра происходит игнорирование даты последнего изменения в источнике EPG. Равносильно TVMW_EPG_IMPORT_ALLOW_PARSER_HANDLING=False.

Примеры использования команды:

Импорт списка программ c определенной даты:

smarty_manage epg_import --epg_source_id=2 --start_date=2023-07-12 

Удаление устаревших программ передач:

smarty_manage epg_import --epg_source_id=2 --actual_days=120

Импорт программы передач только для определенного канала:

smarty_manage epg_import --epg_source_id=2 --epg_channel_id=164 --start_date=2023-07-13

Импорт EPG-премьер

Команда:

smarty_manage epg_premiere_import --settings=settings.<settings name>

Параметры:

--epg_channel_id – EpgChannel, для которого будет производиться импорт EPG-премьер.

Рекомендуется запускать 1-2 раза в день для поддержки актуальности списка премьер (см. Настройка EPG и иконок телеканалов). Если не произвести импорт, то список премьер на устройстве абонента будет пустой.

Кеширование существующих иконок

Команда:

smarty_manage recache_icons --settings=settings.<settings name>

Вызывается в случае отсутствия информации о существующих иконках. Команда проверяет и сохраняет в кеше существование иконок для всех EpgChannel по размерам, указанным в SMARTY_DEFAULT_ICON_SIZE и SMARTY_DEFAULT_ICON_SIZES.

Удаление старых постеров программ передач

Команда:

smarty_manage clean_old_media --settings=settings.<settings name>

Параметры:

--actual_days – количество дней, в течение которого постеры передач считаются актуальными. Постеры, которые были загружены позже заданного значения, считаются неактуальными и будут удалены. По умолчанию 60.

Вещание

Проверка доступности стриминг-сервисов для механизма отказоустойчивости

Команда:

smarty_manage check_stream_services --settings=settings.<settings name>

При настройке отказоустойчивой схемы сервиса с балансировкой нагрузки рекомендуется выполнять эту команду каждую минуту. Команда проверяет сервисы по тем методам проверки, которые настроены в свойствах стриминг-сервиса.

Мониторинг

Опрос анализаторов модуля мониторинга потоков и аларминг по авариям

Команда:

smarty_manage check_streams --settings=settings.<settings name>

Рекомендуется запускать каждые 1-5 минут для актуального состояния данных на странице мониторинга потоков.

Статистика

Сбор и хранение статистики по каждому клиенту

Команда:

smarty_manage save_stats --settings=settings.<settings name>

Данная команда собирает статистику по абонентам (количество абонентов клиента, максимальное количество онлайн, количество продленных абонентов, количество сменивших базовый тариф и т.д.) и статистику по транзакциям. Статистику можно посмотреть по ссылке: smarty.example.com/viewstats/customers_dynamic/.Рекомендуется запускать команду раз в сутки.

Сбор дополнительной статистики для отчета по количеству пользователей

Команда:

smarty_manage collect_daily_stats --settings=settings.<settings name>

Данная команда собирает информацию, которая используется в отчетах по оплатам, а также в графиках «Оплаты сегодня» и «Абоненты, от которых поступила оплата» на экране Динамики абонентов. Команду необходимо запускать каждый день в начале дня (время записи сохраняется в UTC+0).

Сохранение максимального числа абонентов онлайн для статистики

Команда:

smarty_manage cache_max_online --settings=settings.<settings name>

Данная команда проверяет количество пользователей онлайн и сохраняет его в кеш, если оно больше предыдущего значения. Статистику можно посмотреть по ссылке:
smarty.example.com/viewstats/customers_dynamic/. Можно запускать команду с любой регулярностью, но не реже раза в сутки.

Кеширование данных для графиков «Динамики абонентов»

Команда:

smarty_manage cache_customers_dynamic --settings=settings.<settings name>

Параметры:

--client_id — список идентификаторов клиентов через запятую, для которых нужно провести кеширование. Если в аргумент ничего не передано, то кешируются данные для всех клиентов.

Команду рекомендуется запускать раз в час. Для небольших баз графики будут работать быстро и корректно и без данной команды. При первом запуске команда может выполняться долго (зависит от количества аккаунтов, транзакций и тарифов) из-за того, что будут рассчитываться данные за весь прошлый месяц. При повторном запуске будут рассчитываться данные только за последний день или час (уже кешированные данные повторно не кешируются). Поскольку команда может выполняться долго, рекомендуется сначала попробовать для одного клиента.

Очистка БД хранения статистики от старых данных в Smarty

Команда:

smarty_manage reports_remove_old_data --settings=settings.<settings name>

Параметры:

 --days — данные старше данного количества дней следует очищать.

--hours — данные старше данного количества часов следует очищать.

--force — принудительное выполнение команды с игнорированием вопросов для пользователя.

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

Удаление старых отчетов

Команда:

smarty_manage delete_old_reports --save-days=30 --settings=settings.<settings name>

Параметры:

--save-days — промежуток времени в днях, за который отчеты нужно сохранить.