Я готовлю веб-приложение для панели мониторинга (в Django 2.1.7), которое должно отслеживать состояние различных процессов.
Для этого я создал класс ReportEntry в models.py
class ReportEntry(models.Model):
process = models.CharField(max_length=30)
received = models.DateTimeField(auto_now_add=True)
status = models.SmallIntegerField(default=1)
def refresh(self):
self.refresh_from_db()
self.save()
Для просмотра панели инструментов я использую django-tables2 . Скрипт view.py содержит
from .tables import SimpleTable
from django_tables2 import SingleTableView
from .models import ReportEntry
class TableView(SingleTableView):
table_class = SimpleTable
processes = ReportEntry.objects.values('process').distinct()
queryset = [ReportEntry.objects.filter(**k).latest('received') for k in processes]
refresh = [a.refresh() for a in ReportEntry.objects.all()]
template_name = "simple_list.html"
Это веб-приложение работает правильно.
Теперь я хотел бы вставить новую запись в базу данных SQLite (предположим, я хотел бы обновить состояние процесса), используя скрипт Python ниже
from sqlite3 import connect
def create_connection(db_file):
try:
conn = connect(db_file)
return conn
except Exception as e:
print(e)
return None
if __name__ == '__main__':
from datetime import datetime, timedelta
database = r'C:\Apps\Python3702\my_venv\web\mysite\db.sqlite3'
conn = create_connection(database)
cur = conn.cursor()
sql = '''INSERT INTO main.monitor_reportentry(process,received,status)
VALUES(?,?,?)'''
cur.execute(sql, ['test', datetime.now(), 1])
conn.commit()
conn.close()
Когда я выполняю сценарий и вставляю данные в базу данных SQLite, я пытаюсь обновить веб-страницу с помощью панели инструментов, но содержимое не обновляется. Единственное, что работает для меня, это перезапуск сервера, который не является способом перезагрузки данных.
Существует ли "простой" способ периодической перезагрузки данных из базы данных без использования redis / сельдерея и подобных приложений?