django: изменение флага базы данных из асинхронного потока c не оказывает никакого влияния - PullRequest
0 голосов
/ 12 марта 2020

У меня есть проект django 3, который должен иметь возможность создавать поток и затем останавливать его при вызове определенного URL. Моя идея состояла в том, чтобы сделать модель с метаданными Thread. Поток будет иметь ссылку на свой объект метаданных и регулярно проверять логический флаг. Когда флаг установлен, он будет прекращен.

class Process(models.Model):

    termination_flag = models.BooleanField(default=False)

    def check_termination(self):
        return self.termination_flag

    def stop(self):
        print('Stopping process')
        self.termination_flag = True
        self.save()
        print(self.termination_flag)


class MyProcess():

    process = None

    def set_tweepy_stream(self,tweepy_stream):
        self.tweepy_streams.append(tweepy_stream)

    def set_process(self,process ):
        self.process = process 

    def on_event(self, status):
        print('Term flag: ' + str(self.process.check_termination()))

Но это не работает. Когда я вызываю метод Process.stop (), возвращается следующий вывод:

Stopping process
True

Однако при каждом последующем вызове MyProcess.on_event для флага всегда устанавливается значение False. В то же время объект MyProcess вызывает другие методы класса Process, включая функцию счетчика, которая работает правильно. Почему это происходит? Есть идеи, как мне достичь своей цели?

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