2017-11-29 1 views
0

업데이트 읽지 않는장고 스레드가 용기가 나는 스레드 생활을하는 방법을 제어하는 ​​클래스를 HACE 내 models.py에서

class RepartidorThread(threading.Thread): 
    def __init__(self, group=None, target=None, name=None, args=(), kwargs=None, verbose=None): 
     super(RepartidorThread, self).__init__() 
     self.target = target 
     self.name = name 

    def run(self): 
     repartidor = Repartidor.objects.get(pk=1) 

     while True: 
      condition = repartidor.get_thread_state() 
      if condition: 
       do_something() 
       time.sleep(1) 
      else: 
       pass 
       time.sleep(1) 

을 그리고 wsgi.py

from printers.repartidor import RepartidorThread 

thread_repartidor = RepartidorThread(name='Thread_Repartidor') 
thread_repartidor.start() 

에서 스레드를 시작하지만은 문제가 있다면, 나는 get_thread_state()로 repartidor.py의 조건을 읽고는 참 또는 FAL을 반환 se. django_admin을 통해 또는 프론트 엔드를 통해 조건을 변경하면 데이터베이스의 값이 업데이트되고 모든 프로젝트는 항상 첫 번째 스레드를 읽는 스레드를 제외한 새 valor를 읽습니다. 서버를 중지했다가 시작하면 스레드가 새 값을 읽습니다. 왜 이런 일이 일어나는 걸까요?

답변

0

내 문제가 해결되었습니다. run() 메서드에서 while 루프의 각 반복마다 객체를 얻습니다.

def run(self): 
     while True: 
      repartidor = Repartidor.objects.get(pk=1) 
      condition = repartidor.get_thread_state() 
      if condition: 
       do_something() 
       time.sleep(1) 
      else: 
       pass 
       time.sleep(1)