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'
コメント