備忘録(Python)」カテゴリーアーカイブ

さくらインターネットレンタルサーバーでPython仮想環境のCRONを設定

さくらインターネットのレンタルサーバーのスタンダードプランでCRONで仮想環境でのPythonをスケジュールで実行する方法を調べました。

まずは、実行したいPythonをサーバーに保存します。

続いて、Pythonがサーバー上で問題なく実行できるかの確認を行います。

SSHでサーバーにログインします。

続いて仮想環境を作成。

cd {フォルダ}
python3 -m venv {適当な名前}

続いて、仮想環境へ。

source {適当な名前}/bin/activate

仮想環境内で必要なライブラリのインストールを行い、保存したPythonを実行してみる。

続いて、Python実行シェルを作成。

#! /bin/bash

# 仮想環境フォルダまで移動
cd /home/account/folder

# venv環境のactivate
source /home/account/folder/project_name/bin/activate.csh

# 実行ファイルまでのパス
cd /home/account/folder/project_name/

# pythonの実行
/home/account/folder/project_name/bin/python3 /home/account/folder/project_name/exec.py

# 仮想環境から抜ける
deactivate

シェルを作成したら、さくらインターネットのコントロールパネルへログイン。

メニュー>スクリプト設定からCRON設定を開く。

スケジュール追加で、コマンドを登録。

/usr/local/bin/bash /home/account_name/folder/run.sh

実行したいスケジュールを設定。

以下は、毎週水曜の07:30に実行。

以上。

Djangoのエラー通知メールが届かない

Djangoでエラー通知をメールで受信したいことがありましたので備忘録。

メール送信先の設定

settings.pyに設定を追記すればいいみたいでしたが、少しはまりました。

ADMINSの設定

NG:[(‘John’, ‘john@example.com’)]

OK:[(‘John’, ‘john@example.com’),]

末尾のカンマが必要だった。

メール送信が465ポートでできない。

EMAIL_PORT=465
EMAIL_USE_TLS=True

とするも送信できない。

EMAIL_PORT=587
EMAIL_USE_TLS=False

とすると送信できる。

送信エラーを見ると、メールサーバーがSTARTTLSに対応していない。

記事を見ると、EMAIL_PORTとEMAIL_USE_TLSの設定項目のみの記述が多いのですが、公式ドキュメントを確認すると、EMAIL_USE_SSLの設定もある。

なので、

EMAIL_PORT=465
EMAIL_USE_TLS=False
EMAIL_USE_SSL=True

とすると送信できた。