Celeryのロガーをカスタマイズする June 25, 2022 Celery は after_setup_logger シグナルを提供している。このシグナルにカスタムログハンドラーを渡せば、Celery がグローバルロガーを設定した後にトリガーされる。 タスク内でロガーを使うには get_task_logger() を利用する。 from celery import Task from celery.exceptions import Ignore, WorkerShutdown from celery.utils.log import get_task_logger from celery.signals import ( celeryd_init, worker_shutting_down, after_setup_logger) from utils import custom_logger logger = custom_logger(__name__) after_setup_logger.connect(logger) @celeryd_init.connect def configure(sender=None, conf=None, **kwargs): from redis.exceptions import ( AuthenticationError, ConnectionError, ResponseError) r = RedisClient( host=r_cfg['host'], port=r_cfg['port'], password=r_cfg['password'], db=r_cfg['db']) try: r.db.ping() except (AuthenticationError, ConnectionError, ResponseError): logger.exception( f"Failed to connect to Redis at {r_cfg['host']}:{r_cfg['port']}!") raise WorkerShutdown() logger.info(f"Connected to Redis at {r_cfg['host']}:{r_cfg['port']}") MyTask.r_client = r class MyTask(Task): r_client = None _logger = get_task_logger(__name__) def on_failure(self, exc, task_id, args, kwargs, einfo): msg = f'[Task {task_id}] failed: {exc}.\n{einfo}' self._logger.exception(msg) super().on_failure(exc, task_id, args, kwargs, einfo) Previous Next
Redis の RDB 永続化 January 28, 2024 Redis には、RDB (Redis Database) と AOF (Append Only File) という 2 つのデータ永続化方式があります。
LCDに現在の温度・湿度を表示する September 9, 2023 Arduino Nano を使用して、DHT11 温湿度センサから現在の温度と湿度を読み取り、16x2 のキャラクタLCD に表示します。