Python HTTP-сервер доступен для нескольких запросов - PullRequest
1 голос
/ 03 октября 2011

Я много изучал BaseHTTPServer и обнаружил, что он не так хорош для нескольких запросов. Я прошел эту статью http://metachris.org/2011/01/scaling-python-servers-with-worker-processes-and-socket-duplication/#python

и я хотел знать, как лучше всего построить HTTP-сервер для нескольких запросов ->

Мои требования к серверу HTTP просты - - поддержка нескольких запросов (где каждый запрос может запускать LONG Python Script)

До сих пор у меня есть следующие варианты -> - BaseHTTPServer (с темой не хорошо) - Mod_Python (интеграция с Apache) - CherryPy? - Любой другой?

Ответы [ 3 ]

2 голосов
/ 03 октября 2011

Мне очень повезло с веб-сервером CherryPy, одним из самых старых и надежных веб-серверов на чистом Python.Просто напишите свое приложение как вызываемое WSGI, и его должно быть легко запустить на многопоточном сервере CherryPy.

http://www.cherrypy.org/

1 голос
/ 16 октября 2015

Tornado - это действительно хороший и простой в использовании асинхронный цикл обработки событий / веб-сервер, разработанный FriendFeed / Facebook. У меня лично был очень хороший опыт с этим. Вы можете использовать HTTP-классы, как в примере ниже, или только io-loop для мультиплексирования простых TCP-соединений.

import tornado.ioloop
import tornado.web

class MainHandler(tornado.web.RequestHandler):
    def get(self):
        self.write("Hello, world")

application = tornado.web.Application([
    (r"/", MainHandler),
])

if __name__ == "__main__":
    application.listen(8888)
    tornado.ioloop.IOLoop.current().start()
1 голос
/ 03 октября 2011

Действительно, HTTP-серверы, поставляемые со стандартной библиотекой python, предназначены только для использования в легких условиях;Для умеренного масштабирования (100 одновременных подключений) mod_wsgi в apache - отличный выбор.

Если ваши потребности превышают это (10 000 одновременных подключений), вы захотите взглянуть на асинхронную среду, такую ​​как Twisted или Tornado.Общая структура асинхронного приложения совершенно иная, поэтому, если вы считаете, что вам, вероятно, понадобится пойти по этому пути, вам обязательно следует начать свой проект в одной из этих платформ с самого начала

...