2009-10-12 10 views

답변

7

cgi에는 "세션"이 없습니다. 원시 cgi을 사용하는 경우 세션 처리 코드를 롤백해야합니다.

기본적으로 세션은 고유 한 쿠키 번호를 만들어 클라이언트에 대한 응답 헤더로 보내고 모든 연결에서이 쿠키를 확인하여 작동합니다. 서버 (메모리, 데이터베이스, 디스크)의 어딘가에 세션 데이터를 저장하고 쿠키 번호를 키로 사용하여 클라이언트가 요청할 때마다 검색합니다.

그러나 cgi은 웹용 응용 프로그램을 파이썬으로 개발하는 방법이 아닙니다. wsgi을 사용하십시오. 웹 프레임 워크를 사용하십시오.

다음은 cherrypy을 사용한 간단한 예입니다. 이 코드는 wsgi 응용 프로그램이 어떤 wsgi 사용이 가능한 웹 서버 (아파치에 게시 할 수 있다는 의미에서입니다

import cherrypy 

class HelloSessionWorld(object): 
    @cherrypy.tools.sessions() 
    def index(self): 
     if 'data' in cherrypy.session: 
      return "You have a cookie! It says: %r" % cherrypy.session['data'] 
     else: 
      return "You don't have a cookie. <a href='getcookie'>Get one</a>." 
    index.exposed = True 

    @cherrypy.tools.sessions() 
    def getcookie(self): 
     cherrypy.session['data'] = 'Hello World' 
     return "Done. Please <a href='..'>return</a> to see it" 
    getcookie.exposed = True 

application = cherrypy.tree.mount(HelloSessionWorld(), '/') 

if __name__ == '__main__': 
    cherrypy.quickstart(application) 

참고 : cherrypy.tools.sessions 자동으로 데이터 쿠키 설정/검색하고 연결을 처리하는 cherrypy 도구입니다 mod_wsgi을 가짐). 그냥 파이썬으로 코드를 실행할 수 있으며 사용 WSGI을 허용하지 않습니다 호스팅 계획 http://localhost:8080/

+0

하나는 ... 그 동안 물론 당신은 CGI를 통해 WSGI를 배포 할 수 있습니다. 실제로 단일 프로세스 실행 방식은 dev 서버에서 모듈을 다시로드하는 것에 대해 걱정할 필요가 없다는 것을 의미하기 때문에 좋은 생각 일 수 있습니다. – bobince

1

에서 내 '저가'웹 서비스를 제공 시작합니다 그래서 또한, cherrypy는 자신의 wsgi 서버가 있습니다. 공유 아파치 서버이기 때문에 'mod_wsgi'아파치 모듈을 사용할 수 없습니다. 나는 내 수업을 개발 중이다.

는이 사이트에서 사용할 수있는 세션 클래스의 구현을 실험하고, 0에서 시작하지 않으려면 : WSGI에 대한 http://cgi.tutorial.codepoint.net/a-session-class