2009-03-16 2 views
0

나는 장고를 위해 fastcgi 서버로 flup을 사용한다.파이썬 Flup fastcgi 서버로 싱글 톤 클래스를 만드는 방법?

어떻게 싱글 톤을 사용할 수 있습니까? Flup의 스레딩 모델을 잘 이해하고 있는지 잘 모르겠습니다.

+0

어떤 종류의 구성을 사용하고 있습니까? fastcgi 서버가 스레드 또는 분기 중입니까? –

+0

이제 모듈 문맥에서 스레드 fastcgi 및 단일 객체를 사용하지만 올바른지 확실하지 않습니다. 포크로 연결된 서버에서는 작동하지 않을 것이라고 생각합니다. 그런 종류의 문제에 대한 더 일반적인 해결책을 알고 있습니까? – maxp

+0

나는이 맥락에서 싱글 톤을 사용하는 것에 대하여 a를 추천한다. 응용 프로그램은 HTTP 서버의 스레딩 모델에 관계없이 작동해야하며 분리되어야합니다. 당신은 싱글 톤이 필요한 것을 설명 할 수 있습니까? –

답변

0

포크 된 서버를 사용하는 경우 싱글 톤을 가질 수 없습니다 (적어도 실제 컨텍스트보다 오래 지속되는 싱글 톤은 없습니다).

스레드 된 서버를 사용할 수 있어야합니다 (그러나 장고와 웹 서버는별로 없습니다). 당신은 물론, 싱글 톤 객체를 생성하는 코딩을 추가해야합니다 ("...") 트리 점에서

# Singleton module 
_my_singleton = None 

def getSingleton(): 
    if _my_singleton == None: 
     _my_singleton = ... 
    return _my_singleton 

:

당신이 (추가 모듈로)와 같은 코드를 시도했습니다.

아직 생산적인 코드는 아니지만이 기능을 사용하여 싱글 톤이 프레임 워크에서 전혀 작동하는지 확인할 수 있습니다. 싱글 톤은 일종의 "글로벌 스토리지 (global storage)"를 통해서만 가능합니다. 포크 형 서버로 인해이 작업이 더 어려워집니다.

"정상적인 전역 저장소"가 작동하지 않는 경우 다른 가능성이 있습니다. Pythons 직렬화 기능을 사용하여 파일 시스템에 싱글 톤을 저장할 수 있습니다. 물론, 이것은 행동에 훨씬 더 많은 오버 헤드가 될 것입니다!