Сценарий Python не работает только при запуске в качестве службы

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

Я также создал службу SystemD, написанную для моего сценария python. Однако при запуске службы она будет выдавать ошибку в середине каждого второго раунда. SystemD перезапускает скрипт, и он отлично работает в течение 1 раунда и ошибок на полпути.

Вот ошибка из journalctl -xe -f:

Jul 05 16:04:35 glas-dev systemd[1]: magewelk.service: Start 
operation timed out. Terminating.
Jul 05 16:04:35 glas-dev magewelk.py[9685]:       
Jul 05 16:04:35 glas-dev systemd[1]: magewelk.service: Main process 
exited, code=dumped, status=3/QUIT
Jul 05 16:04:35 glas-dev systemd[1]: Failed to start Data collector 
Magewell to Elasticsearch.
-- Subject: Unit magewelk.service has failed
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-
devel
-- 
-- Unit magewelk.service has failed.
-- 
-- The result is failed.
Jul 05 16:04:35 glas-dev systemd[1]: magewelk.service: Unit entered 
failed state.
Jul 05 16:04:35 glas-dev systemd[1]: magewelk.service: Failed with 
result 'core-dump'.
Jul 05 16:04:35 glas-dev systemd[1]: magewelk.service: Service hold-
off time over, scheduling restart.
Jul 05 16:04:35 glas-dev systemd[1]: Stopped Data collector Magewell 
to Elasticsearch.
-- Subject: Unit magewelk.service has finished shutting down
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-
devel
-- 
-- Unit magewelk.service has finished shutting down.
Jul 05 16:04:35 glas-dev systemd[1]: Starting Data collector Magewell 
to Elasticsearch...
-- Subject: Unit magewelk.service has begun start-up
-- Defined-By: systemd
-- Support: http://lists.freedesktop.org/mailman/listinfo/systemd-
devel
-- 
-- Unit magewelk.service has begun starting up.

Файл magewelk.service выглядит следующим образом:

[Unit]
Description=Data collector Magewell to Elasticsearch
After=syslog.target

[Service]
WorkingDirectory=/opt/labglas_streamer
ExecStartPre=/bin/bash -c 'chown -R charter:www-data 
/opt/labglas_streamer'
ExecStart=/opt/labglas_streamer/magewelk.py
Restart=always
KillSignal=SIGQUIT
Type=notify
StandardError=syslog
NotifyAccess=all

[Install]
WantedBy=multi-user.target

Сценарий является однопоточным с перехватом ошибок. Я не получаю никаких ошибок из сценария.

Это на сервере Ubuntu 16.04.2 LTS. Я наблюдал за памятью при сбоях службы, сетевыми соединениями, процессорами и не видел ничего особенного.

0
задан 6 July 2017 в 01:13
1 ответ

Вы, вероятно, захотите использовать «простой» в качестве типа вместо «уведомлять». Уведомление работает только в том случае, если ваш скрипт python знает, как уведомлять systemd.

1
ответ дан 4 December 2019 в 16:12

Теги

Похожие вопросы