mirror of
https://gitlab.com/wgp/dougal/software.git
synced 2025-12-06 11:37:08 +00:00
Add script for daily database housekeeping.
The script bin/daily_tasks.py is intended to be run shortly after midnight every day (e.g., via cron). At the moment it inserts any missing LDSP / FDSP events. It can be extended with other tasks as needed either by expanding Datastore.run_daily_tasks() or by adding to bin/daily_tasks.py. Fixes #223.
This commit is contained in:
28
bin/daily_tasks.py
Executable file
28
bin/daily_tasks.py
Executable file
@@ -0,0 +1,28 @@
|
|||||||
|
#!/usr/bin/python3
|
||||||
|
|
||||||
|
"""
|
||||||
|
Do daily housekeeping on the database.
|
||||||
|
|
||||||
|
This is meant to run shortly after midnight every day.
|
||||||
|
"""
|
||||||
|
|
||||||
|
import configuration
|
||||||
|
from datastore import Datastore
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
|
||||||
|
print("Reading configuration")
|
||||||
|
surveys = configuration.surveys()
|
||||||
|
|
||||||
|
print("Connecting to database")
|
||||||
|
db = Datastore()
|
||||||
|
|
||||||
|
print("Reading surveys")
|
||||||
|
for survey in surveys:
|
||||||
|
print(f'Survey: {survey["id"]} ({survey["schema"]})')
|
||||||
|
db.set_survey(survey["schema"])
|
||||||
|
|
||||||
|
print("Daily tasks")
|
||||||
|
db.run_daily_tasks()
|
||||||
|
|
||||||
|
print("Done")
|
||||||
@@ -720,3 +720,20 @@ class Datastore:
|
|||||||
self.maybe_commit()
|
self.maybe_commit()
|
||||||
# We do not commit if we've been passed a cursor, instead
|
# We do not commit if we've been passed a cursor, instead
|
||||||
# we assume that we are in the middle of a transaction
|
# we assume that we are in the middle of a transaction
|
||||||
|
|
||||||
|
def run_daily_tasks(self, cursor = None):
|
||||||
|
"""
|
||||||
|
Run once-a-day tasks
|
||||||
|
"""
|
||||||
|
if cursor is None:
|
||||||
|
cur = self.conn.cursor()
|
||||||
|
else:
|
||||||
|
cur = cursor
|
||||||
|
|
||||||
|
qry = "CALL log_midnight_shots();"
|
||||||
|
cur.execute(qry)
|
||||||
|
|
||||||
|
if cursor is None:
|
||||||
|
self.maybe_commit()
|
||||||
|
# We do not commit if we've been passed a cursor, instead
|
||||||
|
# we assume that we are in the middle of a transaction
|
||||||
|
|||||||
Reference in New Issue
Block a user