文档章节

gevent 的异步 StreamServer

水果糖
 水果糖
发布于 2016/05/06 11:18
字数 272
阅读 169
收藏 0

测试环境windows + python + gevent,有条件的朋友可以采用pypy测试。


code:

# -*- coding: UTF-8 -*-
from gevent.monkey import patch_all;patch_all()
from gevent.server import StreamServer


def main(socket,address):
    socket.recv(4096)
    socket.send("HTTP/1.1 200 OK\n\n<h1>Hello World!</h1>")



if __name__ == '__main__':
    Server = StreamServer(("192.168.1.190",80),main)
    Server.serve_forever()
    #Server.close()


测试工具(ab):

    

[root@test ~]# ab -c 200 -n 5000000  http://192.168.1.190/

This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.1.190 (be patient)
Completed 500000 requests
Completed 1000000 requests
Completed 1500000 requests
Completed 2000000 requests
Completed 2500000 requests
Completed 3000000 requests
Completed 3500000 requests
Completed 4000000 requests
Completed 4500000 requests
Completed 5000000 requests
Finished 5000000 requests


Server Software:
Server Hostname:        192.168.1.190
Server Port:            80

Document Path:          /
Document Length:        21 bytes

Concurrency Level:      200
Time taken for tests:   493.025 seconds
Complete requests:      5000000
Failed requests:        0
Write errors:           0
Total transferred:      190000000 bytes
HTML transferred:       105000000 bytes
Requests per second:    10141.48 [#/sec] (mean)
Time per request:       19.721 [ms] (mean)
Time per request:       0.099 [ms] (mean, across all concurrent requests)
Transfer rate:          376.34 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        0    1   1.2      0      16
Processing:     3   19   3.8     18     136
Waiting:        1   19   3.8     18     136
Total:          3   20   3.8     19     138

Percentage of the requests served within a certain time (ms)
  50%     19
  66%     20
  75%     21
  80%     21
  90%     23
  95%     26
  98%     29
  99%     33
 100%    138(longest request)
 
[root@test ~]#



© 著作权归作者所有

共有 人打赏支持
水果糖
粉丝 17
博文 158
码字总数 52482
作品 0
深圳
程序员
私信 提问
Python的Gevent框架的支持wsgi的多进程模式么

@郭煜 你好,想跟你请教个问题: 看了你的gevent框架的多进程模式,但是我实际实验的时候发现并不支持,并且会报 Traceback (most recent call last): File "stream.py", line 29, in s.pre...

王晴天
2013/06/20
1K
2
gfirefly 框架分析

数据包 协议 协议如下表 HEAD_0 ... HEAD_3 protoVersion serverVersion length char ... char int int int gfirefly框架是基于TCP协议的长连接,框架中没有使用keep-alive,那么网络异常断开...

toil
2015/03/09
311
0
在 Python 中执行异步的 Solr 查询

我经常需要用Python与solr进行异步请求工作。这里有段代码阻塞在Solr http请求上, 直到第一个完成才会执行第二个请求,代码如下: (我们用Requests库进行http请求) 通过脚本把文档索引到S...

oschina
2013/11/06
1K
1
小计使用多线程和gevent来提高celery性能及稳定性

前言: 有朋友问我,我那个任务队列是怎么实现,他的疑问其实主要是celery不支持多线程。先说说我那实现的方法,其实我的做法和celery、rq这样的框架很像的,都是把任务push到队列里面,然后...

rfyiamcool
2014/07/27
0
0
关于gevent的协程间通信及队列和事件event用法

前言: 今天就写点gevent的高级点的用法,对于我来说 这些也是常用的gevent模块。 gevent的AsyncResutl模块的用途,看字眼的意思是一个异步的任务的结果。 其实官方的说法也让人有些发蒙。 ...

rfyiamcool
2014/08/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大数据处理也要安全--关于MaxCompute的安全科普

摘要: 企业从未像今天这样可以轻易地存储和使用大数据。然而,当您在使用大数据产品时,是否考虑过其中的安全问题呢?庆幸的是,阿里云产品专家和安全专家早就想你所想急你所急,先行一步将...

阿里云云栖社区
19分钟前
1
0
vue如何编写组件可以通过Vue.use()使用

一般平时用别人的组件时都是通过import引入然后Vue.use()来使用,那么如何让我们写的组件也可以用这种方式使用呢? 1.首先新建一个文件夹例如:Home,然后在该文件中新建两个文件Home.vue和i...

北辰丨丶
19分钟前
2
0
SpringBoot自动配置原理

前言 只有光头才能变强。 文本已收录至我的GitHub仓库,欢迎Star:https://github.com/ZhongFuCheng3y/3y 回顾前面Spring的文章(以学习的顺序排好): Spring入门这一篇就够了 Spring【依赖注...

Java3y
24分钟前
1
0
如何伪装成一个服务端开发(十) -- Spring MVC 源码

前言 在第七篇我们已经聊过了一些Spring MVC的运行原理,当然大多数人应该还是和我一样迷迷糊糊,只知道一个大概的运行过程,这一篇,我想要从源码的角度更加进一步去了解Spring MVC的整个运...

街角的小丑
29分钟前
1
0
应用前台耗电怎么破?功耗避雷指南已“佩奇”

使用应用时被用户吐槽手机掉电快、卡顿、过度发热,导致用户体验差,以上情况的产生,应用的功耗设计不足是直接症结。 当前,人们对性能体验的追求前所未有,应用设计功能越来越强大,界面也...

安卓绿色联盟
29分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部