Index: /branches/amp_4_0/platform/tools/container/services/amp-core/supervisord.conf
===================================================================
--- /branches/amp_4_0/platform/tools/container/services/amp-core/supervisord.conf	(revision 2953)
+++ /branches/amp_4_0/platform/tools/container/services/amp-core/supervisord.conf	(working copy)
@@ -65,6 +65,22 @@
 priority=300
 
 ; ============================================================
+; AMP Scheduler
+; ============================================================
+[program:amp_scheduler]
+command=bash -c "python3 /ca/webui/htdocs/new/src/hive/report/scheduled_runner.py"
+directory=/ca/webui/htdocs/new/src
+environment=DJANGO_SETTINGS_MODULE="djproject.settings",PYTHONPATH="/ca/webui/htdocs/new/src:/ca/webui/htdocs/new/src/hive"
+autostart=true
+autorestart=true
+startretries=3
+stdout_logfile=/var/log/amp/scheduler.log
+stderr_logfile=/var/log/amp/scheduler_error.log
+stopasgroup=true
+killasgroup=true
+priority=350
+
+; ============================================================
 ; FTP Server - Package Upload Service (Port 9993)
 ; ============================================================
 [program:ftp_server]
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/clean_elastic.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/clean_elastic.py	(revision 2953)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/clean_elastic.py	(working copy)
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
 # coding: utf-8
 
 import datetime
\ No newline at end of file
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/cm/models/configuration/update/__init__.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/cm/models/configuration/update/__init__.py	(revision 2953)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/cm/models/configuration/update/__init__.py	(working copy)
@@ -1,4 +1,6 @@
 import datetime
+import json
+import time
 
 from apscheduler.schedulers.background import BackgroundScheduler
 from hive.model.query import QuerySet, mark_expire_all
@@ -11,6 +13,7 @@
 from hive.model.action import Action
 from hive.model.fields import *
 from hive.model.manager import CLIManager
+from hive.model.loading import get_model
 
 __ = _
 
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/report/run_scheduled_reports.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/report/run_scheduled_reports.py	(revision 2953)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/report/run_scheduled_reports.py	(working copy)
@@ -1,19 +1,17 @@
-import datetime
+from datetime import datetime
 from cm.lib.libbasic_operation import oper_log
 from hive.report.report_queries import ReportDB
 from hive.report.generate_report import generate_report
-import sys
-sys.path.append('/ca/webui/htdocs/new/src')
 
-now = datetime.utcnow()
 
-due_reports = ReportDB.get_due_reports(now)
+def run_scheduled_reports():
+    now = datetime.utcnow()
 
-for report in due_reports:
-    try:
-        generate_report(report["id"])
-        ReportDB.update_next_run(report["id"])
-    except Exception as e:
-        oper_log("error", "report", f"Scheduled report failed: {e}")
+    due_reports = ReportDB.get_due_reports(now)
 
-
+    for report in due_reports:
+        try:
+            generate_report(report["id"])
+            ReportDB.update_next_run(report["id"])
+        except Exception as e:
+            oper_log("error", "report", f"Scheduled report failed: {e}")
Index: /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/report/scheduled_runner.py
===================================================================
--- /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/report/scheduled_runner.py	(nonexistent)
+++ /branches/amp_4_0/src/webui/webui/htdocs/new/src/hive/report/scheduled_runner.py	(working copy)
@@ -0,0 +1,26 @@
+import time
+import logging
+import os
+import django
+
+os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djproject.settings")
+django.setup()
+from hive.report.run_scheduled_reports import run_scheduled_reports
+
+logging.basicConfig(level=logging.INFO)
+
+INTERVAL_SECONDS = 60
+
+
+def main():
+    logging.info("AMP Report Scheduler started")
+    while True:
+        try:
+            run_scheduled_reports()
+        except Exception:
+            logging.exception("Scheduler error")
+        time.sleep(INTERVAL_SECONDS)
+
+
+if __name__ == "__main__":
+    main()
\ No newline at end of file
