Chinaunix首页 | 论坛 | 博客
  • 博客访问: 536869
  • 博文数量: 142
  • 博客积分: 2966
  • 博客等级: 少校
  • 技术积分: 1477
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-07 22:37
文章分类

全部博文(142)

文章存档

2013年(3)

2012年(21)

2011年(53)

2010年(33)

2009年(32)

分类: Python/Ruby

2012-05-12 02:24:22


点击(此处)折叠或打开

  1. import gevent
  2. import tornado.ioloop
  3. import tornado.web
  4. import amysql
  5. from random import randint

  6. con = amysql.Connection()
  7. con.connect ('127.0.0.1', 3306, 'root', '123', 'test')
  8. con.query('SET GLOBAL query_cache_size = 0;')

  9. def query(r):
  10.     return con.query('SELECT value FROM test WHERE id >= %s LIMIT 10;', (r,))

  11. class MainHandler(tornado.web.RequestHandler):
  12.     @tornado.web.asynchronous
  13.     def get(self):
  14.         self.queries = queries = []
  15.         for i in xrange(10):
  16.             r = randint(1, 1000000 - 10)
  17.             queries.append(gevent.spawn(query, r))

  18.         tornado.ioloop.IOLoop.instance().add_callback(self.output) # 或者add_timeout(time.time() + 0.1, self.output)

  19.     def output(self):
  20.         sum = 0
  21.         for q in self.queries:
  22.             rs = q.get()
  23.             for j in rs.rows:
  24.                 sum += j[0]
  25.         self.write('%6f' % sum)
  26.         self.finish()

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

  30. if __name__ == "__main__":
  31.     application.listen(8000)
  32.     tornado.ioloop.IOLoop.instance().start()


setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1) setsockopt(socket.IPPROTO_TCP,socket.TCP_NODELAY,1)

setsockopt(socket.IPPROTO_TCP, socket.TCP_CORK, 1)
阅读(896) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~