Mercurial > personal > weather-server
comparison weather_server/locations.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 | 7def5611895b |
children | 2f3473416c11 |
comparison
equal
deleted
inserted
replaced
30:c760ab7f93c2 | 31:9bc3687e1e5e |
---|---|
46 e['ingest_time'] = timestamp | 46 e['ingest_time'] = timestamp |
47 self.logger.write_rows(entries) | 47 self.logger.write_rows(entries) |
48 | 48 |
49 @property | 49 @property |
50 def entries(self) -> t.Iterable[t.Dict[str, object]]: | 50 def entries(self) -> t.Iterable[t.Dict[str, object]]: |
51 return self.logger.data | 51 return self.logger.cached_data |
52 | 52 |
53 def latest(self) -> t.Optional[types.Reading]: | 53 def latest(self) -> t.Optional[types.Reading]: |
54 most_recent = reversed(self.logger.data) | 54 most_recent = reversed(self.logger.cached_data) |
55 for entry in most_recent: | 55 for entry in most_recent: |
56 try: | 56 try: |
57 return types.Reading.from_dict(entry) | 57 return types.Reading.from_dict(entry) |
58 except KeyError: | 58 except KeyError: |
59 pass # go to the older one. | 59 pass # go to the older one. |