2012-03-20 4 views
1

, TornadoGistsother gist snippets (this previous question 기준)을 살펴보면, 파이썬의 표준 라이브러리에서 SimpleHTTPServer과 같은 코드를 발견하지 못했습니다. 나는 SimpleHTTPServer이 실행 디렉터리에서 파일을 제공하기 위해 포함하는 모든 상용구와 함께 동시 요청을 처리 할 수있는 아주 작은 웹 서버를 찾고 있습니다.SimpleHTPServer에 해당하는 토네이도가 있습니까?

답변

2

업데이트 : : 토네이도 3 현재, 내장 된 StaticFileHandler을 사용하십시오.

토네이도는 실제로 정적 파일을 제공하기위한 것이 아닙니다. 이것이 어떤 부하를 볼 수 있다면, 당신은 nginx 또는 이와 비슷한 것을 사용해야합니다. 그리고 그렇지 않으면 SimpleHTTPServer을 사용하는 것이 더 쉬울 수도 있습니다. 말했다

, 그것은 하나 작성하는 사소한 :

import os.path 
import mimetypes 

import tornado.httpserver 
import tornado.ioloop 
import tornado.options 
import tornado.web 

class FileHandler(tornado.web.RequestHandler): 
    def get(self, path): 
     if not path: 
      path = 'index.html' 

     if not os.path.exists(path): 
      raise tornado.web.HTTPError(404) 

     mime_type = mimetypes.guess_type(path) 
     self.set_header("Content-Type", mime_type[0] or 'text/plain') 

     outfile = open(path) 
     for line in outfile: 
      self.write(line) 
     self.finish() 

def main(): 
    tornado.options.enable_pretty_logging() 
    application = tornado.web.Application([ 
     (r"/(.*)", FileHandler), 
    ]) 
    http_server = tornado.httpserver.HTTPServer(application) 
    http_server.listen(8888) 
    tornado.ioloop.IOLoop.instance().start() 

if __name__ == "__main__": 
    main() 

이것은 당신이 시작하는 데 불과하다; 만약 당신이 그것을 사용하려고한다면, 당신은 파일 시스템을 걷거나 파일에 접근 할 수 없는지 확인해야합니다. 또한 스크립트는 현재 자체적으로 제공됩니다.

+0

질문에서 언급했듯이 여러 요청을 동시에 처리하려고합니다. 'SimnpleHTTPServer'는 적어도 상자 밖에서는 처리하지 않습니다. 오늘 밤에 당신의 모범을 보겠습니다. 그러나 나는 Nginx를 시도한 이후로 내 필요를 충족시키는 것 같습니다. – technomalogical

+0

아,'SimpleHTTPServer'가 동시 적이 아니라는 것을 몰랐습니다. 물론 당연합니다. 당신은 Nginx 설정을 가지고 있다면, 그것으로 붙어; 더 빠르고 더 강력해질 것입니다. –

+0

그래, 주로 나는 낮은 프로파일과 설치가 용이 한 것을 원했다. 이전에 Nginx와 함께 일한 경험이 없기 때문에 Apache와 비교하여 얼마나 작은 지 알지 못했습니다. – technomalogical

관련 문제