2010-04-19 6 views
1

Django 응용 프로그램에 장시간 HTTP 요청을하면 두 번째 요청과 함께 통신 할 수 있습니까? 요청간에 데이터를 공유 할 수 있습니까?Django에서 핸들러를 어떻게 요청할 수 있습니까?

파일론에는 응용 프로그램 전역 개념이 있습니다. node.js의 최상위 변수는 모두 응용 프로그램 전역입니다. 어떻게 장고에서 할 수 있습니까?

답변

3

이것은 일반적으로 나쁜 생각으로 간주되므로 일반적으로 어떻게 수행되는지 보여 드리겠습니다. 대부분의 경우 장기 실행 작업을 백그라운드로 실행해야하며 해당 작업의 업데이트는 데이터베이스 (예 : 데이터베이스 memcached 또는 그와 비슷한 것)에 저장됩니다. 이렇게하면 너무 많은 요청으로 프런트 엔드 서버의 작동이 멈추지 않게됩니다. 간단하게 AJAX를 타이머에 후자를로드

def long_running_task(number): 
    cache.set("long_running_task_progress", 0, 60*60) # Store for 1 hour. 
    for x in range(0, number): 
     huge_calculation(number) 
     cache.set("long_running_task_progress", (x/number), 60*60) 
    cache.delete("long_running_task_progress") 

def check_long_task(request): 
    percent = cache.get("long_running_task_progress") 
    if percent is None: 
     return HttpResponse("There is no task running!") 
    else: 
     return HttpResponse("The task is %.2f percent complete." % (percent * 100)) 

하고 필요에 따라 페이지에 그것을 풍덩 : 코드가 같을 수 memcached를 사용 (또는 django cache backends의)

.

+1

예. 올바른 방법입니다. 이 종류의 것을 관리하는 [셀러리] (http://celeryproject.org/)를 살펴보십시오. –

관련 문제