2011-10-25 6 views
0

私はDjangoアプリケーションの内部で起動するスレッドを使いたいと思います。Djangoアプリケーションのスレッド。サーバ:CRONやその他の外部サービスなし

私たちがスタンダードのPythonスレッドを使用している場合、要求が完了した時点でWebサーバーによって停止する可能性があります。

標準的な方法はありますか?または、この機能を提供するDjangoライブラリがありますか?

+0

あなたの選択は少し矛盾です:スレッドは常にそれがから開始されたプログラムと一緒に実行されます。スレッドを定義するには

すでに実行中のDjangoアプリケーションと通信できる別のプロセスを意味しますか?もしそうなら、あなたはどのようにコミュニケーションを想像しますか:Djangoはこのサービスに問い合わせることができますか?あなたの希望する機能を詳しく説明して、あなたの質問を改善してください。 – jro

+0

OK、私はこれをしました。修正していただきありがとうございます。 – sergzach

答えて

1

私は長いプロセスにスレッドを集中的に使用します。もちろん、より良い解決策はCeleryです。

from threading import Thread 

class afegeixThread(Thread): 

    def __init__ (self,usuari, expandir=None, alumnes=None, 
        impartir=None, matmulla = False): 
     Thread.__init__(self) 
     self.expandir = expandir 
     self.alumnes = alumnes 
     self.impartir = impartir 
     self.flagPrimerDiaFet = False 
     self.usuari = usuari 
     self.matmulla = matmulla 

    def run(self):   
     errors = [] 
     try: 
      ... 
      self.flagPrimerDiaFet = ... 
      ... 

    def firstDayDone(self): 
     return self.flagPrimerDiaFet 

は、スレッドを呼び出す:言葉の

from presencia.afegeixTreuAlumnesLlista import afegeixThread 
    afegeix=afegeixThread(expandir = expandir, alumnes=alumnes, 
          impartir=impartir, usuari = user, matmulla = matmulla) 
    afegeix.start() 

    #Waiting for first day done before return html: 
    import time 
    while afegeix and not afegeix.firstDayDone(): time.sleep( 0.5) 

    #return html code 
    return HttpResponseRedirect('/presencia/passaLlista/%s/'% pk) 
+0

@danihpという情報をありがとう! – sergzach

関連する問題