2017-11-29 9 views
0

を更新勇気を読んでいない私はどのようにスレッドの寿命を制御するクラスをHACEDjangoのスレッドが私の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に条件を読み、それが真を返すか、ファル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) 
関連する問題