2011-10-25 27 views
0

我想使用一个在Django应用程序内启动的线程。线程与Django应用程序。服务器:没有CRON或其他外部服务

如果我们使用一个非标准的Python线程,它可以在请求完成时由Web服务器停止。

有没有一个标准的方法来做到这一点?还是有可用的Django库提供此功能?

+0

你的用词是有点矛盾的:一个线程将始终与它从启动程序一起运行。你的意思是一个单独的进程可以与已经运行的Django应用程序进行通信吗?如果是这样,你如何设想沟通是:Django可以查询此服务,反之亦然?请通过阐述您所需的功能来改进您的问题。 – jro

+0

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

相关问题