Всем привет,

Взял примеры http демонов с
http://twistedmatrix.com/trac/
и
http://search.cpan.org/perldoc?AnyEvent::HTTPD

чуть допилил до похожего на реальность - они сериализуют запрос в json и
кладут в редис, алгоритм вроде идентичный, однако судя по тестам
ab -c 100 -n 10000
'http://localhost:8080/?param=value1&param2=value2&tid=6666'

twisted чуть больше чем в три раза быстрее (~1500 req/sec против ~500
req/sec), пробовал убрать json и редис в перловом демоне - разницы нет,
он такой же медленный

Что не так - нужно выбросить AnyEvent::HTTPD ? тюнить AnyEvent или юзать
Twisted ?

исходники в аттаче, тестил на обычном писюке с Ubuntu

import redis
from json import dumps
from twisted.web import server, resource
from twisted.internet import reactor

class HelloResource(resource.Resource):
  isLeaf = True
  numberRequests = 0

  r_server = redis.Redis("localhost")

  def render_GET(self, request):
    self.numberRequests += 1
    request.setHeader("content-type", "text/plain")
    req = dumps(request.args)
    tid = request.args['tid'][0]
    try:
      self.r_server.set(tid, req)
      return tid
    except:
      request.setResponseCode(500)
      return '500 error'

reactor.listenTCP(8080, server.Site(HelloResource()))
reactor.run()

Attachment: anyevent-http.pl
Description: Perl program

-- 
Moscow.pm mailing list
[email protected] | http://moscow.pm.org

Ответить