2011-09-19 2 views
0

나는 갇혀 있고 필사적이다.여러 도메인 (가상 호스트)에서 실행되는 여러 개의 python 웹 응용 프로그램?

cherrypy에서 virtualhost를 사용하여 여러 다른 도메인에서 여러 개의 python 웹 응용 프로그램을 제공 할 수 있습니까? 잠시 기다려주십시오 ... 나는 스스로 대답 할 것입니다. 예, 가능합니다. 가상 호스트 디스패처를 사용하면 다음을 요구할 때까지 가능합니다.

동일한 애플리케이션을 여러 인스턴스로 사용해야하지만 다른 버전을 사용해야합니다. 이것은 어쨌든이 애플리케이션을 위해 파이썬 import의 네임 스페이스를 분할해야 함을 의미합니다.

예 : 신청서는 MyApp이며 두 가지 버전이 있습니다. 도메인이 두 개 있는데 app1.comapp2.com입니다. 나는 버전 1. 나는 app2.com 액세스에 응용 프로그램 MyApp을 좀하고 싶습니다 app1.com에 액세스 할 때 ,이 버전에서 MyApp을해야 내가 지금 VirtualHostDispatchercherrypy 3.2의 문제를 사용하고 2

은, 그 때 MyApp 버전 1의 메소드에서 가져 오기를 사용하고 MyApp 버전 2가로드되기 전에 python은 (모듈 캐시 때문에) 이미 가져온 모듈을 사용합니다.

예 .. 가져 오기를 감싸고 파이썬 모듈 캐시를 매번 정리할 수는 있지만 (최상위 수준의 응용 프로그램 객체 인스턴스화에 사용합니다), 그러나 그것은 나에게는 꽤 부정확 한 것처럼 보입니다 ... 그리고 나는 그것이 또한 비효율적 인 ...

그래서 나에게 무엇을 권하고 싶습니까? mod_WSGI를 사용하여 apache2와 cherrypy를 사용하려고 생각했지만, import 문제를 해결하지 못하는 것 같습니다. 왜냐하면 모든 cookies togeter에 대해 여전히 하나의 파이썬 프로세스가 있기 때문입니다.

아마도 전체적인 문제에 대해 완전히 잘못 생각하고 있으며 다시 생각해야 할 것입니다. 나는 모든 아이디어 나 팁을 열어 둔다. 유일한 제한은 내가 파이썬 3을 사용하고 싶다는 것입니다. 그 밖의 다른 것들은 여전히 ​​토론을 위해 열려 있습니다 :-)

모든 응답에 감사드립니다!

답변

1

아파치/mod_wsgi에이 필요한 일을 할 수 있습니다. mod_wsgi에서 마운트 된 각 웹 응용 프로그램은 동일한 프로세스에서 별개의 하위 인터프리터에서 실행되므로 서로 다른 코드 기반을 사용할 수 있습니다. 더 좋은 방법은 mod_wsgi의 데몬 모드를 사용하고 각각의 웹 애플리케이션을 별개의 프로세스로 위임하여 서로 간섭하는 위험이 없다는 것입니다.

+0

고마워. 나는 그 WSGI에 대해 여전히 생각하고 있었지만 결코 기회를주지 못했다. Pitty, 그것이 내가 필요로했던 정확하게 것이기 때문에! 나는 약간의 매뉴얼을 읽을 것이다 :-) 감사합니다! – JoshuaBoshi

0

것처럼 매끄러운 않습니다 myapp_selector 모듈을 만드는 방법에 대한 :

def application(env, start_response): 
    import myapp1 
    import myapp2 
    if env['SERVER_NAME'] == 'myapp1.com': 
     myapp = myapp1 
    elif env['SERVER_NAME'] == 'myapp2.com': 
     myapp = myapp2 
    # ... 
    return myapp.process_request() 
+0

또한 sys.path를 수정할 수 있습니다. import sys sys.path.insert (0, '/ path-to-myapp1 /') – rslnx

+0

질문에 대한 답을 잘못 이해했습니다. 버전 번호가 포함 된 식별자로 응용 프로그램 소스 코드를 유지 관리하는 것은 불가능합니다. 그리고'myapp1','myapp2'라는 숫자가 없다면 예제가 작동하지 않을 것입니다. 고마워, Graham Dumpleton 씨가 벌써 대답했다 :-) – JoshuaBoshi

관련 문제