Apache mod_wsgi는 Apache와 함께 실행되고 CGI 요청을 처리하는 Python 인터프리터를 구현하지만 WSGI와 CGI의 차이점은 WSGI를 사용하면 Apache 서버가 실행되는 동안 Python 세션이 계속 실행된다는 것입니다. CGI 서버가 CGI 요청을받을 때마다 다시 시작해야합니다.Apache에서 WSGI 요청을 수신하는 Python 모듈?
제가 알고 싶습니다. 대화식 Python 세션과 같이 Apache에서 CGI 요청을 수신 대기하는 Python 모듈이 있습니까? 따라서 예를 들어 아파치가 실행 중이고 WSGI 미들웨어가 실행되지 않으면 인터랙티브 한 파이썬 세션을 시작하고 WSGI 미들웨어 모듈을 임포트 한 다음 아파치의 CGI 요청을 처리 할 수있다. 아파치 셧다운. 따라서 Apache mod_wsgi와 같은 단일 세션이지만 Apache와 항상 동시에 실행될 필요는 없으며 대화식 Python 세션에서 실행할 수 있습니다.
편집 1 :
그래서 예를 들면, 나는 myapp.py이 플라스크 응용 프로그램이 있습니다
from flask import Flask
app = Flask(__name__)
app.debug = True
app.apples = 0
@app.route('/')
def hello():
app.apples += 1
return 'blah: %d' % app.apples
if __name__ == '__main__':
app.run(host='0.0.0.0', port=8080)
을 그리고 파이썬 myapp.py을 입력하여 실행할 수 있지만, 자신의 웹을 시작합니다 섬기는 사람. 대신 아파치를 웹 서버로 만들고 싶습니다만, 대화 형 파이썬 셸을 열어 from myapp import *
을 입력하고 응용 프로그램에서 Apache의 요청을 수신하도록하고 싶습니다. 대화 형 셸이 있기 때문에 할 수 있습니다. 예 : print app.apples
또는 app.apples = 50
또는 기타 내 웹 응용 프로그램을 웹 서버와 분리하여 파이썬 셸과 대화식으로 만들길 원합니다.
app.apples
과 같은 말은 숫자가 '/'
인 횟수에 대한 적중 횟수와 같은 전역 변수이며 앱이 실행되는 동안 지속됩니다.
편집 2 :
다른 예가 있습니다.
myapp.py : 여기
import web
def add_global_hook():
g = web.storage({"counter": 0})
def _wrapper(handler):
web.ctx.globals = g
return handler()
return _wrapper
class Hello:
def GET(self):
web.ctx.globals.counter += 1
return "<h1>Counter: %d</h1>" % web.ctx.globals.counter
urls = ("/", "Hello")
app = web.application(urls, globals())
app.add_processor(add_global_hook())
app.run()
, 나는 파이썬 인터프리터를 열고 from myapp import *
을 입력하고, 웹 서버를 시작하지만, 웹 서버가 실행되는 동안, 나는 상호 작용을 사용하여 차단하고있어 수 껍질. 대화 형 셸을 사용할 수 있도록 서버를 비 차단 방식으로 실행하는 방법이 있습니까?
그것은 도움이 될 것이다 - 아마도 그 좋은 아이디어를 자극한다. – gahooa
문제가 발생하면 apache + wsgi 설정을 디버깅하는 데 유용 할 수 있습니다. 또한 wsgi 응용 프로그램 디버깅 및 wsgi에 대한 repl 제공에 대한 일반적인 사용법을 볼 수 있습니다. – jhonkola
그래, 디버깅을하고 싶습니다. 아파치를 대화식 세션과 별도로 실행 시키길 원합니다. 아파치를 따로 닫을 수는 있지만 여전히 대화식 세션이 있습니다. 그래서 수정할 수 있습니다. 아파치 백업을 시작하십시오. –