1

テスト gevent ソケットをどのようにロードできますか? 私は単純なサーバーを作成しました。これをロード テストしてから、コードを微調整してどのような改善ができるかを調べたいと考えています。

ソケット サーバーの負荷テストに関する詳細はありますか? 微調整を適用した後に結果を比較できるように、このコードの負荷テストを行うにはどうすればよいですか?

from gevent import server
from gevent.monkey import patch_all; patch_all()
import gevent


class Client(object):
    def __init__(self, socket, address, server_handler):
        self.socket = socket
        self.address = address
        self.server_handler = server_handler
        gevent.spawn(self.listen)

    def listen(self):
        f = self.socket.makefile()
        while True:
            line = f.readline()
            if not line:
                print 'client died'
                break
            line = line.rstrip()
            for addr, c in self.server_handler.users.iteritems():
                msg = '<%s> says: %s' % (self.address, line)
                c.send(msg)

            print '<%s>: %s' % (self.address, line)

    def send(self, msg):
        f = self.socket.makefile()
        f.write('%s\r\n' % msg)
        f.flush()


class ServerHandler(object):
    def __init__(self):
        self.users = {}

    def __call__(self, socket, address):
        client = Client(socket, address, self)
        self.users[address] = client
        self.socket = socket
        self.address = address
        print 'connection made'


if __name__ == '__main__':
    server = server.StreamServer(('0.0.0.0', 5000), ServerHandler())
    server.serve_forever()
4

0 に答える 0