私は定期的にウェブサイトをポーリングし、ポーリングの結果をツイートする短いスクリプトを書いています。
これを行うには、Pythonの組み込みのロギングメカニズムを使用するのが賢明だと思いました。
# Main Script
twitter_handler = TwitterHandler(config=args.get('twitter-config'))
logger.addHandler(twitter_handler)
logger.debug('Debug', extra={'tweet': True})
# Handler
class TwitterHandler(logging.Handler):
def __init__(self, config=None):
logging.Handler.__init__(self, **kwargs)
# Do whatever setup is necessary
def emit(self, record):
if getattr(record, 'tweet', False):
# tweet
また、条件が変更されていない場合に頻繁にツイートするなど、より複雑なログ処理を紹介したいと思います。
その時点で、私はおそらくこれを3つのタイプのハンドラーに分けて、それらを分離する必要があると思いました。
TweetHandler
:実際にメッセージをツイートするConditionalHandler
:何らかの条件が満たされた場合にのみログに記録するPeriodicHandler
:いくつかの定期的なルールに従ってのみログに記録する
機能をこれらの異なるハンドラーに分割するとしたら、どうすればそれらを組み合わせることができますか?ある種のメタクラスまたはクラスデコレータ?