Proxyのある環境でsystemd経由で起動したPythonでhttp[s]アクセスがうまくいかない

python IT

CentOS7で、Systemdのtimer機能(従来のcronの代わり)を使って、定期的に動作させるシェルを作成しました。
シェルといっても、中身はPythonで記載したもので、Pythonでhttp[s]アクセスします。
Proxyのある環境でしたので、CentOS自体には、Proxyの設定はしてある状態です。

コマンドラインから実行してテストは正常に動作したので、そのシェルをSystemdのtimerで定期的に動作させるように設定しました。

しかし定刻になっても、シェルの実行結果がファイルに出力されないので、シェルが動作してないように見えます。
Systemdのstatusや/var/log/messageをみても、ちゃんと動いていそうです。

いろいろ切り分けた結果、http[s]アクセスがうまく動作していないことが判明。
そこで、Pyton内で、環境変数のhttp_proxyとhttps_proxyの設定をしたところ、正しく動作するようになりました。

CentOSでProxyの設定はしていて、コマンドラインで手動実行も動作していたため、Systemdの設定がおかしいものと思い込んでいたので、原因にたどり着くのに時間がかかりました。

Pythonの環境変数の設定は以下のような感じです。

import os

os.environ['http_proxy'] = 'http://xxx'
os.environ['https_proxy'] = 'https://xxx'

コメント

タイトルとURLをコピーしました