超簡単PythonでBot(ボット)自動再起動(systemd利用)
pythonでsystemdを利用してBot(ボット)を超簡単に自動再起動
1. ファイル作成
/etc/systemd/system/my-bot.service
[Unit]
Description=my bot automatic restart
[Service]
WorkingDirectory=/workspaces/my-bot
ExecStart=/usr/local/bin/python my-bot.py
User=root
# 異常終了時のみリスタート
Restart=on-failure
# リスタート前のスリープ秒
RestartSec=30
[Install]
WantedBy=default.target
/workspaces/my-bot/my-bot.py
import signal
import sys
import time
import traceback
class Bot:
def handler(self, signum, frame):
print("Signal handler called with signal", signum)
# systemctl stop コマンド時は正常終了してリスタートしない
sys.exit(0)
def run(self):
signal.signal(signal.SIGALRM, self.handler)
try:
while True:
print("process")
time.sleep(3)
except Exception:
print(traceback.format_exc())
# 異常終了時はリスタート
sys.exit(1)
if __name__ == "__main__":
Bot().run()
2. 実行
$ sudo systemctl start my-bot # 起動
$ sudo systemctl stop my-bot # 停止
$ sudo systemctl enable my-bot # 自動起動有効化
$ sudo systemctl disable my-bot # 自動起動無効化
$ sudo systemctl status my-bot # 確認
以上、超簡単!