[解決済み】Cronとvirtualenvについて
2022-04-17 12:08:13
質問
cronからDjangoの管理コマンドを実行しようとしています。私は自分のプロジェクトをサンドボックスに保つために virtualenv を使っています。
のようにvirtualenvの中から管理コマンドを実行している例を、ここなどで見かけました。
0 3 * * * source /home/user/project/env/bin/activate && /home/user/project/manage.py command arg
しかし、タスクが開始されるはずのsyslogがエントリを表示しているにもかかわらず、このタスクは実際には実行されません(スクリプトのログファイルは空っぽです)。シェルから手動でこの行を実行すると、期待通りに動作します。
現在、cronでコマンドを実行させる唯一の方法は、コマンドを分割して、馬鹿なbashラッパー・スクリプトに入れることです。
#!/bin/sh
source /home/user/project/env/bin/activate
cd /home/user/project/
./manage.py command arg
EDIT
arsは、動作するコマンドの組み合わせを思いつきました。
0 3 * * * cd /home/user/project && /home/user/project/env/bin/python /home/user/project/manage.py command arg
少なくとも私の場合は、virtualenvのactivateスクリプトを起動しても、何も起こりませんでした。これはうまくいったので、本番に臨みます。
解決方法は?
を使用することで、できるはずです。
python
を仮想環境上で実行します。
/home/my/virtual/bin/python /home/my/project/manage.py command arg
EDIT: もしあなたの django プロジェクトが PYTHONPATH に入っていないなら、正しいディレクトリに切り替える必要があります。
cd /home/my/project && /home/my/virtual/bin/python ...
また、cronから失敗のログを取るようにすることもできます。
cd /home/my/project && /home/my/virtual/bin/python /home/my/project/manage.py > /tmp/cronlog.txt 2>&1
もうひとつは、同じ変更を
manage.py
スクリプトの一番上にあります。
#!/home/my/virtual/bin/python
関連
-
[解決済み】TypeErrorの修正方法。Unicodeオブジェクトは、ハッシュ化する前にエンコードする必要がある?
-
[解決済み】 TypeError: += でサポートされていないオペランド型: 'int' および 'list' です。
-
[解決済み】Pythonのvirtualenvを離脱/終了/無効化する方法
-
[解決済み] virtualenvの問題 - 起動できない
-
[解決済み] staticmethodとclassmethodの違いについて
-
[解決済み] virtualenvで異なるバージョンのPythonを使用する
-
[解決済み] 全ユーザーのcronジョブを一覧表示する方法を教えてください。
-
[解決済み] Python 3をvirtualenvで使う
-
[解決済み】__str__と__repr__の違いは何ですか?
-
[解決済み】venv, pyvenv, pyenv, virtualenv, virtualenvwrapper, pipenvなどの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Python百行で韓服サークルの画像クロールを実現する
-
Python interpreted model libraryによる機械学習モデル出力の可視化 Shap
-
PythonでECDSAを実装する方法 知っていますか?
-
[解決済み】ImportError: sklearn.cross_validation という名前のモジュールがない。
-
[解決済み】なぜ「LinAlgError: Grangercausalitytestsから「Singular matrix」と表示されるのはなぜですか?
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】終了コード -1073741515 (0xC0000135)でプロセス終了)
-
[解決済み】"No JSON object could be decoded "よりも良いエラーメッセージを表示する。
-
[解決済み】Flask ImportError: Flask という名前のモジュールがない
-
[解決済み】Python: OverflowError: 数学の範囲エラー