0
私はDjangoアプリケーションの内部で起動するスレッドを使いたいと思います。Djangoアプリケーションのスレッド。サーバ:CRONやその他の外部サービスなし
私たちがスタンダードのPythonスレッドを使用している場合、要求が完了した時点でWebサーバーによって停止する可能性があります。
標準的な方法はありますか?または、この機能を提供するDjangoライブラリがありますか?
私はDjangoアプリケーションの内部で起動するスレッドを使いたいと思います。Djangoアプリケーションのスレッド。サーバ:CRONやその他の外部サービスなし
私たちがスタンダードのPythonスレッドを使用している場合、要求が完了した時点でWebサーバーによって停止する可能性があります。
標準的な方法はありますか?または、この機能を提供するDjangoライブラリがありますか?
私は長いプロセスにスレッドを集中的に使用します。もちろん、より良い解決策は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)
@danihpという情報をありがとう! – sergzach
あなたの選択は少し矛盾です:スレッドは常にそれがから開始されたプログラムと一緒に実行されます。スレッドを定義するには
すでに実行中のDjangoアプリケーションと通信できる別のプロセスを意味しますか?もしそうなら、あなたはどのようにコミュニケーションを想像しますか:Djangoはこのサービスに問い合わせることができますか?あなたの希望する機能を詳しく説明して、あなたの質問を改善してください。 – jro
OK、私はこれをしました。修正していただきありがとうございます。 – sergzach