Mercurial > personal > weather-server
view weather_server/common.py @ 31:9bc3687e1e5e
logfile: Add an index, and don't keep everything in RAM.
- Adds index BSON file, updated upon writing.
- Limits amount of data in RAM.
- Gracefully handles writes that don't update index.
author | Paul Fisher <paul@pfish.zone> |
---|---|
date | Tue, 07 Jul 2020 19:51:30 -0400 |
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)