···
···
FEED_URI = 'at://did:plc:4nsduwlpivpuur4mqkbfvm6a/app.bsky.feed.generator/popular'
if os.path.isdir('/dev/shm/'):
os.makedirs('/dev/shm/feedgens/', exist_ok=True)
-
self.db_cnx = sqlite3.connect('/dev/shm/feedgens/popular.db')
-
self.db_cnx = sqlite3.connect('db/popular.db')
-
self.db_cnx.create_function('exp', 1, math.exp)
-
self.db_cnx.executescript(
-
"pragma journal_mode = WAL;"
-
"pragma synchronous = OFF;"
-
"pragma wal_autocheckpoint = 0;"
-
"create table if not exists posts (uri text, create_ts timestamp, update_ts timestamp, temperature int);"
-
"create unique index if not exists uri_idx on posts(uri);"
-
self.cleanup_checkpoint = 0
def process_commit(self, commit):
···
"on conflict (uri) do update set temperature = temperature + 1, update_ts = :ts"
), dict(uri=like_subject_uri, ts=ts))
-
self.cleanup_checkpoint += 1
-
if self.cleanup_checkpoint % 1000 == 0:
-
sys.stdout.write('popular: running cleanup checkpoint\n')
-
"delete from posts where temperature * exp( -1 * ( ( strftime( '%s', 'now' ) - strftime( '%s', create_ts ) ) / 1800.0 ) ) < 1.0 and strftime( '%s', create_ts ) < strftime( '%s', 'now', '-15 minutes' )"
-
"pragma wal_checkpoint(TRUNCATE)"
def serve_feed(self, limit, offset, langs):
cur = self.db_cnx.execute((
···
···
FEED_URI = 'at://did:plc:4nsduwlpivpuur4mqkbfvm6a/app.bsky.feed.generator/popular'
if os.path.isdir('/dev/shm/'):
os.makedirs('/dev/shm/feedgens/', exist_ok=True)
+
db_fname = '/dev/shm/feedgens/popular.db'
+
db_fname = 'db/popular.db'
+
self.db_cnx = apsw.Connection(db_fname)
+
self.db_cnx.pragma('journal_mode', 'WAL')
+
self.db_cnx.pragma('synchronous', 'OFF')
+
self.db_cnx.pragma('wal_autocheckpoint', '0')
+
self.db_cnx.execute("""
+
create table if not exists posts (uri text, create_ts timestamp, update_ts timestamp, temperature int);
+
create unique index if not exists uri_idx on posts(uri);
def process_commit(self, commit):
···
"on conflict (uri) do update set temperature = temperature + 1, update_ts = :ts"
), dict(uri=like_subject_uri, ts=ts))
+
def run_tasks_minute(self):
+
sys.stdout.write('popular: running minute tasks\n')
+
"delete from posts where temperature * exp( -1 * ( ( strftime( '%s', 'now' ) - strftime( '%s', create_ts ) ) / 1800.0 ) ) < 1.0 and strftime( '%s', create_ts ) < strftime( '%s', 'now', '-15 minutes' )"
+
self.db_cnx.pragma('wal_checkpoint(TRUNCATE)')
def serve_feed(self, limit, offset, langs):
cur = self.db_cnx.execute((