Python2で使うfabricとsubprocessはエラーハンドリングに気をつける
Fabricは、アプリケーションのデプロイやシステム管理のタスクのためにSSHの利用を簡素化するためのPython2系のライブラリとコマンドラインのツール
fab {method}でコマンドラインスクリプトで呼び出しができる
Pythonのsubprocessはサブプロセスを起動するためのモジュール。python内からコマンド実行するのに使う
この2つの組み合わせでのエラーハンドリングには気をつける
fab_test.py
from fabric.api import local
def hello():
local("exit 1")
cmd.py
import subprocess
def main():
subprocess.call("fab hello", shell=True)
main()
- fab hello で実行して echo $?で確認すると1になる
- python cmd.py で実行して echo $?で確認すると0になる
- subprocess.callがエラーハンドリングに対応してない。
- 代わりにsubprocess.check_callを使う
- fabricの1系がpython2系の対応のためsubprocess.runが使えないのでエラーハンドリングが異なることに注意
- 特にデプロイ周りのエラーで注意する