2012-12-12 3 views
1

브라우저에서 실행하고 싶은 Python 스크립트가 있습니다. mod_wsgi가 너무 길어 보이지만 방법이 너무 무겁고 스크립트 수정이 필요할 것입니다. 산출. 이상적인 PHP 접근 방식을 원합니다. 스크립트는 입력을받지 않으며 내부 네트워크에서만 액세스 할 수 있습니다.웹 서버에서 파이썬 스크립트를 제공합니다

mod_wsgi가 이미 설정된 Linux에서 아파치를 실행 중이며, 여기에있는 옵션은 무엇입니까?

+0

은 무엇입니까 환상적인 이점이 될 것입니다 표시되지 않습니다 산출; 템플릿을 사용하여 HTML 구조 생성 및 요소 채우기를 사용할 수 있습니까? –

+0

나는 그것이 단지 일반 텍스트 일 ​​것임에 틀림 없어야했다. 스크립트는'print'를'stdout'에 사용했다. 브라우저를 통해 출력물을 표시하는 빠르고 간단한 방법이었다. –

답변

3

요구 사항이 변경 될 경우를 대비하여 마이크로 프레임 워크 접근 방식을 사용합니다. 어딘가 아파치가 액세스 할 수있는 스크립트를 넣어 sys.stdout

  • 에 다른 출력 전에 print 'Content-Type: text/plain\n'를 스크립트 복제 및 포함

    • : 단지 기본 덤프 ... 아마도 가장 간단한 (그리고 구식 방법은!?) CGI를 사용하는 그것 (당신의 cgi-bin 예를 들면)
    • 원본이다는 것을 확인하십시오 실행
    • .py 아파치 CGI 처리기에 추가되어 있는지 확인

    하지만 - 어쨌든이 (적어도 장기적으로)

  • +0

    이것은 단기간 덤프 일 필요가 있으므로 완벽합니다. –

    +0

    @sudo_O 나는 테스트를 거치지 않았다는 것에주의해야한다. 그러나 이론적으로는 (적어도 작동하는 configs/examples을 찾을 정도로 충분하다) –

    +0

    작동한다 ....... –

    3

    파이썬의 마이크로 프레임 워크를 사용하여 서버에서 스크립트를 빠르게 실행할 수 있습니다. 대부분은 자체 경량 서버를 포함합니다. 또한 파이썬 HttpServer

    사용하여 표준 라이브러리 당신이 원하는 일을하는 데 필요한 도구를 제공합니다

    import cherrypy 
    class HelloWorld(object): 
        def index(self): 
         # run your script here 
         return "Hello World!" 
        index.exposed = True 
    
    cherrypy.quickstart(HelloWorld()) 
    

    cherrypy 홈 페이지 문서에서

    는 기본 서버는 BaseHttpServer를 사용하여 :

    import time 
    import BaseHTTPServer 
    
    
    HOST_NAME = 'example.net' # !!!REMEMBER TO CHANGE THIS!!! 
    PORT_NUMBER = 80 # Maybe set this to 9000. 
    
    
    class MyHandler(BaseHTTPServer.BaseHTTPRequestHandler): 
        def do_HEAD(s): 
         s.send_response(200) 
         s.send_header("Content-type", "text/html") 
         s.end_headers() 
        def do_GET(s): 
         """Respond to a GET request.""" 
         s.send_response(200) 
         s.send_header("Content-type", "text/html") 
         s.end_headers() 
         s.wfile.write("<html><head><title>Title goes here.</title></head>") 
         s.wfile.write("<body><p>This is a test.</p>") 
         # If someone went to "http://something.somewhere.net/foo/bar/", 
         # then s.path equals "/foo/bar/". 
         s.wfile.write("<p>You accessed path: %s</p>" % s.path) 
         s.wfile.write("</body></html>") 
    
    if __name__ == '__main__': 
        server_class = BaseHTTPServer.HTTPServer 
        httpd = server_class((HOST_NAME, PORT_NUMBER), MyHandler) 
        print time.asctime(), "Server Starts - %s:%s" % (HOST_NAME, PORT_NUMBER) 
        try: 
         httpd.serve_forever() 
        except KeyboardInterrupt: 
         pass 
        httpd.server_close() 
        print time.asctime(), "Server Stops - %s:%s" % (HOST_NAME, PORT_NUMBER) 
    

    마이크로 프레임 워크에 대한 좋은 점은 추상적 인 것입니다. (필요한 경우 인터페이스를 제공해야 함)

    관련 문제