cronを使ってやってしまった件
ヤラカシタ....
先週からPython(Pyramid)でコマンドを作成し、
それをcronで定期実行すると言うよくあることをやっていた。
(ただcronが何なのかくらいの知識しかない私
本日プルリクが通ってリリース後の下記コマンドを実行して
動作検証を行った。
$ crontab -e $ crontab -l
動作検証の結果、エラーが発生。
Pyramidで作成したコマンドのパスが通っておらず実行出来なかった。
私の浅知恵では、
cronはユーザーごとに管理されている。
よって環境変数もユーザーに依存しているはずだ!
ユーザーのホームディレクトリ = cronのホームディレクトリからも言えよう!
と考えており当然コマンドの実行が叶うとばかり考えておりました。
ここまではすぐに修正できる。やってしまったのはこの後
まさかのフルパス
ダサい・・・エンジニア?という自問自答ですよねorz
時間が無かったとはいえフルパスはよろしくない....@帰りの電車
どうしてコマンドが通らなかったのか、
どう修正すれば良いのか調べて明日再度cronの修正させてもらう
という失敗備忘録(つづく。。。
Pythonでポリモーフィズム
Pythonでポリモーフィズムを使いたくてインターフェースを探したがまさかのなし。 スクリプト初心者はびっくり。さらにググります。
でもpython3系からは抽象クラスを表現できるとのことで頑張ってみることに 結局ベースとなるクラスを抽象クラスとしてポリモーフィズムを利用した
備忘録
抽象クラス 抽象クラスを定義する際は下記を定義し、
クラス名の後にmetaclass=ABCMeta
と記述(abstractmethodは適宜追加のこと)from abc import ABCMeta, abstractmethod
静的メソッド 余談では有りますが、Pythonでは静的メソッドに対して
@staticmethod
を記述することで、そのメソッドは静的メソッドとなります
以上のことを踏まえて簡単に抽象クラスと継承クラスを記述しました
(該当箇所に#
で番号を振ってあります)
# 1.
from abc import ABCMeta, abstractmethod
class BasePush(metaclass=ABCMeta):
@staticmethod
@abstractmethod # 2, 4.
def push(msg):
pass
class Push(BasePush):
@staticmethod # 3.
def push(msg):
# 送信処理
suにハイフン(-)を付加することについて備忘録
また忘れてたので記事化。
ハイフンを付加
- ログインユーザーのログインシェルが実行される
- ログインユーザーのカレントディレクトリに移動
ハイフンを付加しない
- 実行ユーザーのシェル・カレントディレクトリが引き継がれる