Mercurial > personal > weather-server
view weather_server/common.py @ 24:20c8ec56e447
logfile: Pull logfile thread out of Logger.
This enables automatic garbage collection of Logger instances,
since a running thread no longer has a reference to a Logger's self.
It separates exclusive management of logfile state into the
_writer_thread function, which now opens the file and writes it until
it is told to stop by receiving the poison pill.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Sun, 10 Nov 2019 23:07:11 -0500 |
parents | 52ef21607b31 |
children |
line wrap: on
line source
import datetime import json import typing as t import bson import pytz BSON_OPTIONS = bson.DEFAULT_CODEC_OPTIONS.with_options( tz_aware=True, tzinfo=pytz.UTC) def bson_encode(data: t.Dict[str, t.Any]) -> bytes: return bson.BSON.encode(data, codec_options=BSON_OPTIONS) class DateEncoder(json.JSONEncoder): def default(self, o: t.Any) -> t.Any: if not isinstance(o, datetime.datetime): return super().default(o) return o.timestamp() JSON_ENCODER = DateEncoder(sort_keys=True) def json_dumps(data: t.Any) -> str: return JSON_ENCODER.encode(data) def utc_now(): return datetime.datetime.utcnow().replace(tzinfo=pytz.UTC)