From 1d3318f6e2c3aa1371b645090f4467337acb7694 Mon Sep 17 00:00:00 2001 From: Simon Date: Sat, 29 Sep 2018 12:01:02 -0400 Subject: [PATCH] Create new rescan task when no queued tasks --- app.py | 12 ++++++++++-- database.py | 9 ++++----- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/app.py b/app.py index 3b2b622..0fb775f 100644 --- a/app.py +++ b/app.py @@ -550,9 +550,17 @@ def api_get_task(): if task: print("Assigning task " + str(task.website_id) + " to " + name) - return Response(str(task), mimetype="application/json") else: - return abort(404) + print("No queued tasks, creating new rescan task") + + website_id = db.get_oldest_website_id() + website = db.get_website_by_id(website_id) + task = Task(website_id, website.url) + db.put_task(task) + + task = db.pop_task(name) + + return Response(str(task), mimetype="application/json") else: return abort(403) diff --git a/database.py b/database.py index 252a30f..1300127 100644 --- a/database.py +++ b/database.py @@ -156,14 +156,13 @@ class Database: website_id = cursor.fetchone() return website_id[0] if website_id else None - def get_websites_older(self, delta: datetime.timedelta): - """Get websites last updated before a given date""" - date = datetime.datetime.utcnow() - delta + def get_oldest_website_id(self): with sqlite3.connect(self.db_path) as conn: cursor = conn.cursor() - cursor.execute("SELECT Website.id FROM Website WHERE last_modified < ?", (date, )) - return [x[0] for x in cursor.fetchall()] + cursor.execute("SELECT Website.id FROM Website WHERE Website.id not in (SELECT website_id FROM Queue) " + "ORDER BY last_modified ASC LIMIT 1") + return cursor.fetchone()[0] def delete_website(self, website_id):