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
好的,我做到了。谢谢你的纠正。 – sergzach