вторник, 26 мая 2026 г.

Запуск скрипта-сервиса на Python для непрерывной работы через systemd

Для примера далее рассматривается скрипт "/home/korolev/autocall_process.py"
Скрипт Python должен работать в бесконечном цикле примерно так:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import subprocess
from psycopg2 import sql
from datetime import datetime, time
<... функция work() и другие ...>
def main():
    while True:
        work()
        # Пауза перед следующей итерацией
        time.sleep(CHECK_INTERVAL)
if __name__ == "__main__":
    main()


После отладки, делаем сам скрипт исполняемым:
# chmod +x /home/korolev/autocall_process.py
Создаем unit системы systemd:
# nano /etc/systemd/system/autocall.service
[Unit]
Description=AutoCall Dialer Service Freeswitch
After=network.target postgresql.service freeswitch.service
Wants=postgresql.service freeswitch.service
[Service]
Type=simple
User=korolev
Group=korolev
WorkingDirectory=/home/korolev
Environment=PYTHONUNBUFFERED=1
ExecStart=/usr/bin/python3 /home/korolev/autocall_process.py
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=autocall
[Install]
WantedBy=multi-user.target


Так как скрипт работает от пользователя korolev, но должен обращаться к ПО Freeswitch, работающее под пользователем freeswitch, добавляем пользователя korolev в группу freeswitch
# usermod -aG freeswitch korolev

Запускаемся:
# systemctl daemon-reload
# systemctl start autocall.service
# systemctl enable autocall.service


Следить за логами теперь можно через системный журнал так:
# journalctl -u autocall.service -f

Комментариев нет:

Отправить комментарий