CronでXserverのPythonを定期実行をしよう

  • 2020.09.26
  • 2021.01.24
  • Python
NO IMAGE

初期設定

こちらをご覧ください。
XserverでPythonを実行(初期設定)

Cronとは


Xserverでどうにか自動化できないか調べたところ
Cron(クローン)」というのを見つけました。

Cronとは
指定時間に指定コマンド(プログラム)を
自動的に実行させるサーバーの機能
です。

TwitterツイートするコードをPythonで書いたので、
それを自動化するためファイルをXserverに置いて、
cronで時間を指定して、自動コマンド実行できるようにしました。

Cronの設定

サーバーパネルへログインし、「→Cron設定」をクリックします。


Cron設定追加をクリック


設定を追加しましょう。

Cron設定例

(毎日22時に1回)
分 :0
時間:22
日 :*
月 :*
曜日:*
コマンド:/usr/bin/python3 /home/サーバーID/独自ドメイン名/public_html/python/tweet-bot/test_run.py

(1時間に1回)
分 :0
時間:*
日 :*
月 :*
曜日:*
コマンド:/usr/bin/python3 /home/サーバーID/独自ドメイン名/public_html/python/tweet-bot/test_run.py

入力したら「確認画面へ進む」をクリックしましょう。

確認して問題なければ「追加する」をクリックしましょう。

あとは、指定の時間通りに動いてくれるはずです。

ModuleNotFoundErrorが発生


これですごい困りました。

ローカルでは動くのになぜかCronにすると動かない現象がおきました。

logも出していなかったので、なぜエラーになったのかも分からず
ただただ動かないという謎現象で悩みました。

コマンドで実際に

$ /usr/bin/python3 /home/サーバーID/独自ドメイン名/public_html/python/tweet-bot/test_run.py

入力してエラー原因がわかりました。

エラー原因は「/usr/bin/python3」が
pipを必要とするパケージ類を
持っていないことが原因(ModuleNotFoundError)でした。

スマートな解決方法は分からずでしたが、
無理やりですが、解決した方法をお教えします。

ModuleNotFoundError解決方法


コマンドのパスを

$ /home/サーバーID/.local/share/virtualenvs/tweet-bot-sT2xpPeZ/bin/python3 /home/サーバーID/独自ドメイン名/public_html/python/tweet-bot/main.py

とすることで、動きました!

.local/share/virtualenvs/プロジェクト名/bin/python3
こちらのPython3を使用することで、解決しました。

ModuleNotFoundError
出て困っている方がぜひこちらの記事で解決できてお役に立てれば幸いです。

もし、スマートな解決方法を知っている方は教えていただけましたら幸いです。

では、良き自動化ライフをお楽しみください

Cronを使用して動いているツイッターBot

実際にCronを使用して稼働させています
英会話を自動でツイートしてくれます。

1時間に1回(0分)になったら、
Cronがコマンドを自動実行してくれて、ツイートしてくれます。

フォロワーが少ないので、ぜひフォローしてください。そうしていただけますと嬉しいです!


Pythonカテゴリの最新記事