2013-07-31 22 views
5

Tôi đang sử dụng chai khuôn khổ python với lốc xoáy webserver. Dưới đây là tôi init.py:Làm thế nào chạy chai + lốc xoáy + ssl (https) + spdy

import bottle 
import os 

# Init application 
bottle.run(host="127.0.0.1", app=app, port=int(os.environ.get("PORT", 5000)), server='tornado') 
  • Làm thế nào để thực hiện kết nối thông qua HTTPS?

Tôi đã đọc bài viết này http://dgtool.blogspot.com/2011/12/ssl-encryption-in-python-bottle.html nhưng đó là về máy chủ CherryPy.


  • Có posible để sử dụng SPDY với Tornado? Làm sao? (tôi thấy TornadoSPDY trên GitHub, nhưng không có lời giải thích làm thế nào để sử dụng nó)

Bất kỳ giúp đánh giá cao

Trả lời

4

Tốt nhất là nên sử dụng một máy chủ kết thúc trước proxy như nginx, haproxy hoặc apache. Cấu hình lốc xoáy với ssl cực kỳ chậm, nó làm chậm cơn lốc xoáy xuống một lần thu thập dữ liệu cho đến khi nó trở nên hoàn toàn không phản hồi chỉ với số lần truy cập tối thiểu. Tôi đã nhìn khắp mọi nơi để có được một tốc độ khá trong lưu lượng ssl bằng cách sử dụng lốc xoáy trực tiếp, nhưng không tìm thấy bất kỳ. Bên cạnh đó nó không phải là xấu để sử dụng một máy chủ kết thúc trước.

Nhưng bằng cách sử dụng apache f.ex. như một proxy kết thúc trước, tôi đã gần với tốc độ không ssl gốc.

Nhưng để cấu hình lốc xoáy với ssl, rất đơn giản:

def main(): 
    handlers = [ 
     (r"/", HomeHandler), 
    ] 
    settings = dict(
     blog_title=u"Tornado Blog", 
     template_path=os.path.join(os.path.dirname(__file__), "templates"), 
     static_path=os.path.join(os.path.dirname(__file__), "static"), 
     cookie_secret="__TODO:_GENERATE_YOUR_OWN_RANDOM_VALUE_HERE__", 
     debug=True, 
     certfile = os.path.join("certs/server.crt"), 
     keyfile = os.path.join("certs/server.key"), 
     ssl_options = { 
      "certfile" : os.path.join("certs/server.crt"), 
      "keyfile" : os.path.join("certs/server.key"), 
     }, 
    ) 
    tornado.options.parse_command_line() 
    http_server = tornado.httpserver.HTTPServer(Application()) 
    http_server.listen(options.port) 
    tornado.ioloop.IOLoop.instance().start() 

main()