2016-04-12 15 views
0

私はタイムスタンプごとにデータベースからデータを収集するpythonスクリプトを持っています。 216-04-12午前14時53分 'で例えばPythonスクリプトを終了する前に何かをする方法

このスクリプトは1分のDELYと現在時刻と一致することにより、DB内の特定のテーブルからデータを収集する毎分

その上でDBとの「
スクリプトは に一致するデータ を探します」216-04-12午前14時52分 " ...

は、今私は、スクリプトは、それが収集され、最後のタイムスタンプを保存したいですから(キーボード割り込み、システムエラー、データベースの障害箇所など)

私がデータベースを変更できないことを知りたい簡単な方法はありますか

+0

スクリプトを変更できますか?当然の – syntonym

+0

はい:混乱: – farhawa

+0

あなたは[終了ハンドラ]を見ることができる – timgeb

答えて

0

Pythonのatexit moduleがお手伝いします。 import atexitを実行し、プログラムが終了したときに実行する関数を登録できます。最も退出状況で動作します

import atexit 

def exit_handler(): 
    print 'My application is ending!' 

atexit.register(exit_handler) 

this post、すなわちを参照してください。

その同じスレッドから別の、より堅牢な答え:

def main(): 
    try: 
     execute_app() # Stuff that happens before program exits 
    finally: 
     handle_cleanup() # Stuff that happens when program exits 

if __name__=='__main__': 
    main() 

上記はもう少し信頼性がある...

最も信頼できる方法は、毎分ごとの時間を、あなたの出力を書き込むことであろう以前の出力を上書きします。そうすることで、出口の清掃が行われたかどうかに関わらず、プログラムが終了してからのデータが残ります。

0

モジュールatexitatexit.register()を使用してクリーンアップ機能を登録できます。機能fghの順に登録すると、プログラム終了時には、これらは逆の順序で実行されます(hgf)。

ただし、これらの機能は、の通常のプログラム終了時に呼び出されます。 普通は、Pythonで処理される終了を意味します。奇妙なケースではうまくいきません。

関連する問題