2011-10-25 2 views
0

Django 응용 프로그램에서 시작되는 스레드를 사용하고 싶습니다.장고 앱이있는 스레드. 서버 : CRON 또는 기타 외부 서비스 없음

우리가 standart 파이썬 스레드를 사용하는 경우 요청이 완료되면 웹 서버에 의해 중지 될 수 있습니다.

표준 방법이 있습니까? 아니면이 기능을 제공하는 Django 라이브러리가 있습니까?

+0

당신의 선택입니다 약간의 충돌 : 스레드가 항상에서 시작되는 프로그램과 함께 실행됩니다. 이미 실행중인 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

관련 문제