Python言語のロギングとランタイム情報

この例では、次のファイル名を使用する: 'logrun.py

コード

この例のコードは、一般的には使用されないかもしれない機能を探っている。 ログの記録は、AEの実行を追跡するのに役立つ。 使用するには、AEがログマスクで登録され、nzudxdbgを介してロギングが有効になっていなければならない。 NPS システムが起動したウィンドウでシステム・ログ・メッセージを受信するには、NPS を'-i'オプションで起動する必要がある(例えば、'nzstart-i') これにより、NPSプロセスは端末に接続されたままとなる。 ランタイム情報は、データスライス数、SPU 数、実行場所など、NPS システムに関する統計情報を提供する。

import nzae
class LogRunAe(nzae.Ae):
    def _run(self):
        for row in self:
            pass
        self.output("Dataslice ID: " + repr(self.getDatasliceId()))
        self.output("Hardware ID: " + repr(self.getHardwareId()))
        self.output("Number of Data Slices: " +
repr(self.getNumberOfDataSlices()))
        self.output("Number of Spus: " + repr(self.getNumberOfSpus()))
        self.output("Suggested Memory Limit: " +
repr(self.getSuggestedMemoryLimit()))
        self.output("Transaction ID: " + repr(self.getTransactionId()))
        self.output("Is A User Query: " + repr(self.isAUserQuery()))
        self.output("Is Logging Enabled: " + repr(self.isLoggingEnabled()))
        self.output("Is Running on a spu: " + repr(self.isRunningOnSpu()))
        self.output("Is Running in Postgres: " +
repr(self.isRunningInPostgres()))
        self.output("Is Running in DBOS: " + repr(self.isRunningInDbos()))
        self.output("Is a UDA: " + repr(self.isUda()))
        self.output("Is a UDF: " + repr(self.isUdf()))
        self.output("Is a UDTF: " + repr(self.isUdtf()))

        self.log("Here is some logging text!", self.LOG_LEVEL__DEBUG)
        self.log("Here is some more logging text!", self.LOG_LEVEL__DEBUG)

LogRunAe.run()

デプロイメント

スクリプトをデプロイする:

$NZ_EXPORT_DIR/ae/utilities/bin/compile_ae --language python64 \
     --template deploy ./logrun.py --version 3 

登録

memオプションと-maskオプションを使ってサンプルを登録する。 maskオプションはDEBUGのロギングを有効にし、-memオプションはメモリーのランタイム情報を設定する。

$NZ_EXPORT_DIR/ae/utilities/bin/register_ae --language python64 --version 3 \
     --template udtf --exe logrun.py --sig "log_run(int4)" \
     --return "table(text varchar(1000))" --mask debug --mem 100k

実行中

実行する前に、'nzudxdbg:実行してロギングを有効にする。

nzudxdbg
Processing 1 spus
.
done
Processing host
done

nzsqlでクエリを実行する:

SELECT * FROM TABLE WITH FINAL(log_run(1));
             TEXT
-------------------------------
 Dataslice ID:           0
 Hardware ID:            0
 Number of DATA Slices:  4
 Number of Spus:         1
 Suggested Memory LIMIT: 102400
 Transaction ID:         8520
 IS A User Query:        True
 IS Logging Enabled:     True
 IS Running ON a spu:    False
 IS Running IN Postgres: False
 IS Running IN DBOS:     True
 IS a UDA:               False
 IS a UDF:               False
 IS a UDTF:              True
(14 rows)

NPS システムのログは、NPS システムが起動されたウィンドウに表示されます:

05-05-10 14:33:18 (dbos.18728) [d,udx ] Here is some logging text!
05-05-10 14:33:18 (dbos.18728) [d,udx ] Here is some more logging text