Twisted + Django + обратный прокси - PullRequest
0 голосов
/ 16 октября 2010

Я развернул Twisted в качестве веб-сервера для моего сайта.Я изучаю возможности обратного проксирования.

У меня есть следующий код, подключенный к моему реактору для django.Я использую комету, и я понимаю, что я обязательно должен использовать порт 80, поэтому я изучаю возможности обратного проксирования.На этом сайте я нашел следующий пример:

# Django setup
sys.path.append("shoout_web")
os.environ['DJANGO_SETTINGS_MODULE'] = 'shoout_web.settings'

def wrapper_WSGIRootWrapper():
    # Build the wrapper first
    generic = WSGIHandler()
    def HandlerWrapper(environ, start_response):
        environ['engine'] = engine
        return generic(environ, start_response)

    # Thread and Allowing Ctrl-C to get you out cleanly:
    pool = threadpool.ThreadPool()
    pool.start()
    reactor.addSystemEventTrigger('after', 'shutdown', pool.stop)
    return wsgi.WSGIResource(reactor, pool, HandlerWrapper)
WSGIRoot = wrapper_WSGIRootWrapper()

# Reverse Proxy
class Simple(Resource):
    isLeaf = False

    def getChild(self, name, request):
        if name == "orbited":
            print "orbited"
            return proxy.ReverseProxyResource('localhost', 12345, "/"+name)
        else: 
            return WSGIRoot.getChildWithDefault(name, request)

# Attaching proxy + django 
log_dir = './.log'
if not os.path.exists(log_dir):
    os.makedirs(log_dir)
reactor.listenTCP(DJANGO_PORT, server.Site(Simple(), logPath=os.path.join(log_dir, '.django.log')))

Моя проблема в том, что я не знаю, что заполнять в остальной части второй части кода.Я посмотрел на text_proxy на twisted-src, и не было существенных примеров для этого.Любая помощь?

1 Ответ

1 голос
/ 17 октября 2010

Мне не понятно, почему вы хотите использовать обратный прокси.Я думаю, что вы пытаетесь использовать правильный инструмент по неправильным причинам.

Обратный прокси-сервер полезен, потому что вы можете иметь легкий сервер, такой как nginx, который может обрабатывать тысячи соединений http keep-alive с очень небольшим объемом памяти.Соединения между обратным прокси-сервером и реальным веб-сервером (в вашем случае витые) меньше и недолговечны по сравнению, поэтому вы можете справиться с более высокими нагрузками.Обратите внимание, что если вы используете долгоживущие кометные соединения, то здесь нет никакой выгоды, потому что вам нужно, чтобы соединение было открыто на обоих серверах на время.

Вы, похоже, хотите использовать его, чтобы просто сделать серверна порту 12345, доступном на порту 80. Это не то, для чего нужен обратный прокси.Почему бы просто не привязать порт 80 в первую очередь?

...