···
···
FEED_URI = 'at://did:plc:4nsduwlpivpuur4mqkbfvm6a/app.bsky.feed.generator/rapidfire'
if os.path.isdir('/dev/shm/'):
os.makedirs('/dev/shm/feedgens/', exist_ok=True)
15
-
self.db_cnx = sqlite3.connect('/dev/shm/feedgens/rapidfire.db')
16
+
db_fname = '/dev/shm/feedgens/rapidfire.db'
17
-
self.db_cnx = sqlite3.connect('db/rapidfire.db')
18
+
db_fname = 'db/rapidfire.db'
20
+
self.db_cnx = apsw.Connection(db_fname)
21
+
self.db_cnx.pragma('journal_mode', 'WAL')
22
+
self.db_cnx.pragma('synchronous', 'OFF')
23
+
self.db_cnx.pragma('wal_autocheckpoint', '0')
20
-
self.db_cnx.executescript(
21
-
"pragma journal_mode = WAL;"
22
-
"pragma synchronous = OFF;"
23
-
"pragma wal_autocheckpoint = 0;"
24
-
"create table if not exists posts (uri text, create_ts timestamp, lang text);"
25
-
"create index if not exists create_ts_idx on posts(create_ts);"
26
+
self.db_cnx.execute("""
27
+
create table if not exists posts (uri text, create_ts timestamp, lang text);
28
+
create index if not exists create_ts_idx on posts(create_ts);
def process_commit(self, commit):
···
post_uri = f'at://{repo}/{path}'
51
-
self.checkpoint += 1
langs = record.get('langs') or ['']
···
dict(uri=post_uri, ts=ts, lang=lang)
61
-
self.db_cnx.execute(
62
-
"delete from posts where strftime('%s', create_ts) < strftime('%s', 'now', '-15 minutes')"
61
+
def run_tasks_minute(self):
62
+
sys.stdout.write('rapidfire: running minute tasks\n')
66
+
self.db_cnx.execute(
67
+
"delete from posts where strftime('%s', create_ts) < strftime('%s', 'now', '-15 minutes')"
65
-
if self.checkpoint % 100 == 0:
66
-
sys.stdout.write('rapidfire: checkpoint\n')
68
-
self.db_cnx.execute("pragma wal_checkpoint(TRUNCATE)")
70
+
self.db_cnx.pragma('wal_checkpoint(TRUNCATE)')
def serve_feed(self, limit, offset, langs):