Differences between revisions 2 and 7 (spanning 5 versions)
Revision 2 as of 2004-08-15 22:44:25
Size: 265
Editor: Zoom.Quiet
Comment: benchmarks框架结构
Revision 7 as of 2009-12-25 07:15:28
Size: 4864
Editor: localhost
Comment: converted to 1.6 markup
Deletions are marked like this. Additions are marked like this.
Line 6: Line 6:
-- Zoom.Quiet [[[DateTime(2004-08-15T22:40:43Z)]]]
[[TableOfContents]]
-- Zoom.Quiet [<<DateTime(2004-08-15T22:40:43Z)>>]
<<TableOfContents>>
Line 10: Line 10:

 * [[http://wiki.woodpecker.org.cn/moin.cgi/Otter_2fOtterBase?action=AttachFile&do=get&target=OtterBase-040814|OtterBase-040814下载]] --修改扩展为 rar, winrar 3.2以上版本!
Line 11: Line 13:
Line 18: Line 21:

= otter 2.0 =
== ussd.py ==
 我暂时无法收发邮件,所以把对otter 2.0 的服务端流量控制的尝试发到wiki上讨论。

{{{
#!python
# -*- coding: utf-8 -*-
#
#
# $Id: ussd.py,v 1.8 2004/09/14 12:45:00 hoxide Exp $
"""$,1$U现了(BUSS德腄aemon程序
"""

from uss.message import usspmsg
from uss.protocols import ussp
from twisted.internet import reactor, protocol
from time import clock

import Queue
import thread

class USSServerProtocol(ussp.USSProtocol):
    """建立$,1){嘎?(BUSS服务器的协议处理"""
    """
    def __init__(self):
        ussp.USSProtocol.__init__(self)
    """
    funs={
            'connect': lambda self, m: self.p_ussp_connect(m),
            'mail_counter': lambda self, m: self.p_ussp_mail_counter(m),
            'terminate': lambda self, m: self.p_ussp_terminate(m)
            }
    def connectionMade(self):
        """建立连接?$,1%#?R舳疾蛔?(B"""
        print 'connectionMade'
        self.funs=USSServerProtocol.funs
    def on_ussp_connect(self, message):
        getqueue.put((self, 'connect', message))
    def on_ussp_mail_counter(self, message):
        getqueue.put((self, 'mail_counter', message))
    def on_ussp_terminate(self, message):
        getqueue.put((self, 'terminate', message))
        
    def p_ussp_connect(self, message):
        """处理?$,1&[Щ?(Bconnect报文"""
        smessage = usspmsg.USSPMessage()
        smessage.head.sequence = message.head.sequence
        smessage.setMsgName('connect_resp')
        smessage.body.setField('status',1)
        smessage.body.setField('version',1)
        self.sendData(smessage.packed())

    def p_ussp_mail_counter(self, message):
        """处理?$,1&[Щ⒗吹?(Bmail_counter报文"""
        smessage = usspmsg.USSPMessage()
        smessage.head.sequence = message.head.sequence
        smessage.setMsgName('mail_counter_resp')
        smessage.body.setField('uid',message.body.fields['uid'])
        smessage.body.setField('number',2028)
        self.sendData(smessage.packed())

    def p_ussp_terminate(self, message):
        """处理?$,1&[Щ?(Bterminate报文"""
        smessage = usspmsg.USSPMessage()
        smessage.head.sequence = message.head.sequence
        smessage.setMsgName('terminate_resp')
        self.sendData(smessage.packed())
        # 完事了!!!?$,1'?>的连接
         self.transport.loseConnection()
    
class USSServerFactory(protocol.ServerFactory):
    """USS服务器工厂"""
    protocol = USSServerProtocol

import time
def processData(queue):
    while 1:
        """
        if queue.empty():
            print 'sleep 1 sec'
            time.sleep(1)
            continue
        """
        #print 'to get'
        m = queue.get(block=True)
        #print 'get'
        m[0].funs[m[1]](m[0], m[2])

getqueue = Queue.Queue(100)

#thread.start_new(processData, (getqueue,))
reactor.callInThread(processData, getqueue)

def main():
    f = USSServerFactory()
    reactor.listenTCP(7890, f)
    reactor.run()

if __name__ == "__main__":
    main()
 
  
}}}

有点乱码,和我emacs的设置问题有关。

== 测试 ==

客户端的WINMAX设到1000000,就几乎等于客户端没开窗口。

{{{

H:\OpenGNS\BENCHM~1>ussc.py
Connect successfully
Connection lost
测试数据: 4095 搪
收到 4095 搪
最后收德絬id为B?094
勇檬保潞2.14 寐
每秒:1917.559960搪

H:\OpenGNS\BENCHM~1>ussc.py
Connect successfully
Connection lost
测试数据: 4095 搪
收到 4095 搪
最后收德絬id为B?094
勇檬保潞2.54 寐
每秒:1611.171839搪

H:\OpenGNS\BENCHM~1>ussc.py
Connect successfully
Connection lost
测试数据: 8191 搪
收到 8191 搪
最后收德絬id为B?190
勇檬保潞5.05 寐
每秒:1621.519510搪

H:\OpenGNS\BENCHM~1>ussc.py
Connect successfully
Connection lost
测试数据: 16383 搪
收到 16383 搪
最后收德絬id为B?6382
勇檬保潞13.89 寐
每秒:1179.812285搪
}}}

这个只是曲起点,我测了一下0xfff的情况,只有40多条每秒, 要考虑其他办法,比如服务器和发送者之间流量控制的配合

程序使用了线程。具体参见twisted的[[http://wiki.woodpecker.org.cn/moin.cgi/PyTwisted_2fLowLevelNetworkingEventLoop_2fLLNEL9]]

Otter 目标代码框架!

-- Zoom.Quiet [2004-08-15 22:40:43]

目标

生成框架中的uss*和usp*

benchmarks框架结构

uss

message

protocols

otter 2.0

ussd.py

  • 我暂时无法收发邮件,所以把对otter 2.0 的服务端流量控制的尝试发到wiki上讨论。

   1 # -*- coding: utf-8 -*-
   2 #
   3 #
   4 # $Id: ussd.py,v 1.8 2004/09/14 12:45:00 hoxide Exp $
   5 """$,1$U现了(BUSS德腄aemon程序
   6 """
   7 
   8 from uss.message import usspmsg
   9 from uss.protocols import ussp
  10 from twisted.internet import reactor, protocol
  11 from time import clock
  12 
  13 import Queue
  14 import thread
  15 
  16 class USSServerProtocol(ussp.USSProtocol):
  17     """建立$,1){嘎?(BUSS服务器的协议处理"""
  18     """
  19     def __init__(self):
  20         ussp.USSProtocol.__init__(self)
  21     """
  22     funs={
  23             'connect': lambda self, m: self.p_ussp_connect(m),
  24             'mail_counter': lambda self, m: self.p_ussp_mail_counter(m),
  25             'terminate': lambda self, m: self.p_ussp_terminate(m)
  26             }
  27     def connectionMade(self):
  28         """建立连接?$,1%#?R舳疾蛔?(B"""
  29         print 'connectionMade'
  30         self.funs=USSServerProtocol.funs
  31     def on_ussp_connect(self, message):
  32         getqueue.put((self, 'connect', message))
  33     def on_ussp_mail_counter(self, message):
  34         getqueue.put((self, 'mail_counter', message))
  35     def on_ussp_terminate(self, message):
  36         getqueue.put((self, 'terminate', message))
  37         
  38     def p_ussp_connect(self, message):
  39         """处理?$,1&[Щ?(Bconnect报文"""
  40         smessage = usspmsg.USSPMessage()
  41         smessage.head.sequence = message.head.sequence
  42         smessage.setMsgName('connect_resp')
  43         smessage.body.setField('status',1)
  44         smessage.body.setField('version',1)
  45         self.sendData(smessage.packed())
  46 
  47     def p_ussp_mail_counter(self, message):
  48         """处理?$,1&[Щ⒗吹?(Bmail_counter报文"""
  49         smessage = usspmsg.USSPMessage()
  50         smessage.head.sequence = message.head.sequence
  51         smessage.setMsgName('mail_counter_resp')
  52         smessage.body.setField('uid',message.body.fields['uid'])
  53         smessage.body.setField('number',2028)
  54         self.sendData(smessage.packed())
  55 
  56     def p_ussp_terminate(self, message):
  57         """处理?$,1&[Щ?(Bterminate报文"""
  58         smessage = usspmsg.USSPMessage()
  59         smessage.head.sequence = message.head.sequence
  60         smessage.setMsgName('terminate_resp')
  61         self.sendData(smessage.packed())
  62         # 完事了!!!?$,1'?>的连接
  63          self.transport.loseConnection()
  64     
  65 class USSServerFactory(protocol.ServerFactory):
  66     """USS服务器工厂"""
  67     protocol = USSServerProtocol
  68 
  69 import time
  70 def processData(queue):
  71     while 1:
  72         """
  73         if queue.empty():
  74             print 'sleep 1 sec'
  75             time.sleep(1)
  76             continue
  77         """
  78         #print 'to get'
  79         m = queue.get(block=True)
  80         #print 'get'
  81         m[0].funs[m[1]](m[0], m[2])
  82 
  83 getqueue = Queue.Queue(100)
  84 
  85 #thread.start_new(processData, (getqueue,))
  86 reactor.callInThread(processData, getqueue)
  87 
  88 def main():
  89     f = USSServerFactory()
  90     reactor.listenTCP(7890, f)
  91     reactor.run()
  92 
  93 if __name__ == "__main__":
  94     main()
  95  

有点乱码,和我emacs的设置问题有关。

测试

客户端的WINMAX设到1000000,就几乎等于客户端没开窗口。

H:\OpenGNS\BENCHM~1>ussc.py
Connect successfully
Connection lost
测试数据:      4095 搪
收到 4095 搪
最后收德絬id为B?094
勇檬保潞2.14 寐
每秒:1917.559960搪

H:\OpenGNS\BENCHM~1>ussc.py
Connect successfully
Connection lost
测试数据:      4095 搪
收到 4095 搪
最后收德絬id为B?094
勇檬保潞2.54 寐
每秒:1611.171839搪

H:\OpenGNS\BENCHM~1>ussc.py
Connect successfully
Connection lost
测试数据:      8191 搪
收到 8191 搪
最后收德絬id为B?190
勇檬保潞5.05 寐
每秒:1621.519510搪

H:\OpenGNS\BENCHM~1>ussc.py
Connect successfully
Connection lost
测试数据:     16383 搪
收到 16383 搪
最后收德絬id为B?6382
勇檬保潞13.89 寐
每秒:1179.812285搪

这个只是曲起点,我测了一下0xfff的情况,只有40多条每秒, 要考虑其他办法,比如服务器和发送者之间流量控制的配合

程序使用了线程。具体参见twisted的http://wiki.woodpecker.org.cn/moin.cgi/PyTwisted_2fLowLevelNetworkingEventLoop_2fLLNEL9

Otter/OtterBase (last edited 2009-12-25 07:15:28 by localhost)