···
from datetime import datetime, timezone
5
-
from io import BytesIO
11
-
from atproto import CAR
app_bsky_allowlist = set([
···
async with websockets.connect(relay_url, ping_timeout=60) as firehose:
42
-
payload = BytesIO(await firehose.recv())
44
-
yield json.load(payload)
39
+
yield json.loads(await firehose.recv())
redis_cnx = redis.Redis()
···
69
-
async for payload in bsky_activity():
70
-
if payload['opType'] != 'c':
64
+
async for event in bsky_activity():
65
+
if event['type'] != 'com':
68
+
payload = event['commit']
69
+
if payload['type'] != 'c':
collection = payload['collection']
if collection not in app_bsky_allowlist:
77
-
repo_did = payload['did']
76
+
repo_did = event['did']
repo_update_time = datetime.now(timezone.utc)
'insert into users values (:did, :ts) on conflict (did) do update set ts = :ts',
···
96
-
now = datetime.now(timezone.utc)
97
-
payload_seq = payload['seq']
98
-
payload_lag = now - repo_update_time
100
-
sys.stdout.write(f'seq: {payload_seq}, lag: {payload_lag.total_seconds()}\n')
101
-
redis_pipe.set('dev.edavis.muninsky.seq', payload_seq)
95
+
current_time_ms = datetime.now(timezone.utc).timestamp()
96
+
event_time_ms = event['time_us'] / 1_000_000
97
+
current_lag = current_time_ms - event_time_ms
98
+
sys.stdout.write(f'lag: {current_lag:.2f}\n')