Я создаю простое приложение Django.Внутри этого приложения у меня есть один флажок.Я сохраняю это состояние флажка в базе данных, если он отмечен в базе данных. У меня есть значение True
, если флажок снят, у меня есть значение False
.Там нет проблем с этой частью.Теперь я создал функцию, которая выводит для меня каждые 10 секунд все это значение состояния флажка из базы данных.
Функция, которую я помещаю в файл views.py, и он выглядит так:
def get_value():
while True:
value_change = TurnOnOff.objects.first()
if value_change.turnOnOff:
print("true")
else:
print("false")
time.sleep(10)
Дело в том, что функция должна работать все время.Например, если я в models.py
code checkbox = models.BooleanField(default=False)
после того, как я выполню команду python manage.py runserver
, это должно дать мне вывод, например:
Performing system checks...
System check identified no issues (0 silenced).
January 04, 2019 - 09:19:47
Django version 2.1.3, using settings 'CMS.settings'
Starting development server at http://127.0.0.1:8000/
Quit the server with CTRL-BREAK.
true
true
true
true
, тогда, если я захожу на сайт и изменяю состояние, должно вывести false, это очевидно,Но, как вы заметили, проблема заключается в том, как запустить этот метод.Это должно работать все время, даже если я еще не захожу на сайт.И эта часть меня смущает.Как это сделать правильно?
Мне нужно признать, что я пробовал некоторые решения
поместить эту функцию в конец файла manage.py,
поместите эту функцию в def ready(self)
,
создайте класс промежуточного программного обеспечения и поместите метод здесь (пример кода ниже).
Но это решение не работает.
промежуточного класса:
class SimpleMiddleware:
def __init__(self, get_response):
self.get_response = get_response
get_value()