Как управлять остановкой или перезапуском задачи с сайта на базе Django? - PullRequest
0 голосов
/ 09 июля 2020

Я буду запускать сценарий на сервере, который автоматически создаст экземпляры модели в базе данных. Идея состоит в том, чтобы использовать бесконечный l oop (например, while True :), который будет бесконечно создавать экземпляры, пока я каким-то образом не остановлю его. Я хочу использовать Django, чтобы хорошо проверить на моем веб-сайте, насколько велика моя база данных, и оттуда я хочу остановить или перезапустить ее. Что здесь может быть хорошим подходом? Я думал о сельдерее, но не знаю, как мне не понять, как его остановить, и это похоже на излишество. Есть предложения?

1 Ответ

1 голос
/ 09 июля 2020

Простое решение - иметь класс, который сохраняет в db имя скрипта и должен ли он продолжать работать:

class ScriptTracker():
    name = models.Charfield()
    keep_running = models.BooleanField()

Тогда ваш скрипт будет просто проверять db каждые l oop чтобы узнать, должен ли он остановиться:

def my_script():

    while True:

        if not ScriptTracker.objects.get(name="my_script").keep_running:
            # stop running
            return

        # creating an instance in the db
        MyObject.objects.create(name="helloworld")
        
  1. Создайте объект ScriptTracker

ScriptTracker.objects.create(name="my_script", keep_running=True)

Запустите свой скрипт, это можно сделать просто, если скрипт построен как команда управления:

python manage.py my_script

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...