Cronie/Vixie形式のcrontabは、スケジュールされたコマンドの上に環境エントリを記述できます。Pythonジョブはプロキシのルートを直接受け取れます。

http_proxy=http://proxy.example.net:8080
https_proxy=http://proxy.example.net:8080

15 * * * * cd /srv/myapp && /srv/myapp/.venv/bin/python jobs/fetch.py

この例は毎時15分に実行されます。パスは既存のプロジェクトとPython環境を指し、スクリプトが使うHTTPクライアントはこれらのプロキシ変数を読む必要があります。HTTPプロキシ一覧は、プロキシアカウントを必要としない許可された公開取得ジョブにエンドポイントを提供できます。

これらの環境エントリは、そのcrontab内の後続のジョブに適用されます。1つのジョブだけがルートを使う場合は、変数の代入をそのジョブのコマンドに置いてください。

プロジェクトの実際のインタープリタと作業ディレクトリを使ってください。正しいプロキシ値があっても、別のPythonインストールが目的の依存関係をインポートしたり、プロジェクトからの相対パスで設定ファイルを見つけたりすることはできません。スケジュールされたコマンドがすでに正しい環境を選んでいるなら、PYTHONPATHやライブラリパスの広範な追加は不要です。

関連記事