V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
ivito
V2EX  ›  Python

Python 的用多进程处理客户端请求

  •  
  •   ivito ·
    fireboyvt · 2015-08-26 17:32:31 +08:00 · 2495 次点击
    这是一个创建于 3386 天前的主题,其中的信息可能已经有所发展或是发生改变。
    使用 Python 中 SocketServer 模块中的 ForkingMixIn 处理客户端请求,实现给客户端发送 PID 和时间功能
    class ForkingServerHandler (SocketServer.BaseRequestHandler ):

    def handle (self ):
    data = self.request.recv (1024 )
    current_pid = os.getpid ()
    response = 'server pid: %s server time %s:' % (current_pid, server_time ())
    print response
    self.request.send (response )
    return


    class ForkingServer (SocketServer.TCPServer, SocketServer.ForkingMixIn,):
    """time server , return the server time to client"""
    pass
    但发现在本地开启了好几个客户端后服务端仍然只使用一个进程处理请求,为何?
    3 条回复    2015-08-28 15:00:07 +08:00
    paw
        1
    paw  
       2015-08-26 18:55:58 +08:00
    class ForkingServer (SocketServer.TCPServer, SocketServer.ForkingMixIn,):
    改成
    class ForkingServer (SocketServer.ForkingMixIn, SocketServer.TCPServer ):

    继承循序的问题
    paw
        2
    paw  
       2015-08-26 19:02:56 +08:00
    PS :不推荐用自带库的这个 forkinng ,还不如下面来的方便
    s = SocketServer.TCPServer (('', PORT ),HandlerClass )
    for x in xrange (fork_process ):
    pos = x
    pid = os.fork ()
    if pid == 0 :
    break

    s.serve_forever ()
    PPS:学 python 网络,先把标准库的 SocketServer.py 读了,你的问题就在这文件的 614 行( python 2.7.9 )
    ivito
        3
    ivito  
    OP
       2015-08-28 15:00:07 +08:00
    @paw 非常感谢,解释完全正确,是继承顺序的问题。 SocketServer.py 写的确实很赞,几百行实现了一个服务器框架。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3679 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 34ms · UTC 04:31 · PVG 12:31 · LAX 20:31 · JFK 23:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.