【備忘録追記】Linux上でDiscordのbotをPythonで動かす・改

以前の記事でdiscordのbotをLinux上で動かす方法を紹介しましたが、二重起動防止の部分の実装について、普通にもっといい方法があったので追記します。

①までは前回の記事と一緒です。今回は②から。

②cronを設定

不慮の事故でbotが落ちた時に、いちいち「nohup python3 discobot.py < /dev/null&」するのはクソめんどくさいので、落ちていたら自動で再起動させるという風にしたいと思います。

Linuxについている「cron」という機能を利用します。cronの使い方がそもそもわからない人はググってください。

cronに以下のように指定します。

* * * * * setlock -Xn discobot.lock python3 discobot.py
#(※discobot.lockとdiscobot.pyの場所はフルパスで書く)

setlockというのは、第1引数に指定したファイル (この場合ならdiscobot.lock) をロックして、その後の引数に書いたプロセスを起動するという意味です。つまり、discobot.lockがロックされている間は別のプロセスがdiscobot.lockをロックして起動することはできませんから、二重起動を防止してくれるわけです。

つまり、discobot.lockがロックされていなければbotを起動するという動作をcronに仕込んでおくのです。

これで1分ごとに落ちているかどうかを確認して、落ちていたら再起動するようになりました。

多分これでbotがだいぶ安定的に動作するようになったんじゃあないでしょうか。

以上、追記でした。

Kasumi

投稿者: Kasumi

東京都青梅市在住。鉄道マニア。

「【備忘録追記】Linux上でDiscordのbotをPythonで動かす・改」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。