見出し画像

超簡単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 # 確認

以上、超簡単!

3. 参考



この記事が気に入ったらサポートをしてみませんか?