python code gist
@ hanamichi · Saturday, Jun 30, 2018 · 1 分钟阅读 · 更新于 Jun 30, 2018

记录一些python的代码片段

python并发长连接程序

server

# server.py
import time
import gevent
from gevent import socket,monkey
monkey.patch_all()

def server(port):
    s = socket.socket()
    s.bind(('0.0.0.0', port))
    s.listen(500)
    while True:
        cli, addr = s.accept()
        gevent.spawn(handle_request, cli)

def handle_request(conn):
    try:
        while True:
            data = conn.recv(1024)
            print("recv:", data)
            conn.send(data)
            if not data:
                conn.shutdown(socket.SHUT_WR)
    except Exception as ex:
        print (ex)
    finally:
        conn.close()

if __name__ == '__main__':
    server(8001)

client

#client.py
import time
import gevent

from gevent import socket,monkey
monkey.patch_all()

def handle_request(i):
    s = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    s.connect(('localhost',8001))
    while True:
        msg = "client " + str(i) + " send msg\n"
        s.sendall(msg)
        data = s.recv(1024)
        print ('Received', repr(data))
        time.sleep(5)
    s.close()

if __name__ == '__main__':
    threads = [gevent.spawn(handle_request,i) for i in range(10)]
    gevent.joinall(threads)

关于我

关于我

Hanamichi 的❤博客

记录一些🌈生活上,技术上的事

全平台玩家(pc-steam, ps4, switch), 不碰手游不碰国内垃圾网游

职业是后端工程师

正在努力学习

对云原生微服务感兴趣

主要的技术栈是:

  • golang
  • kubernetes
  • 微服务架构

略懂一二:

  • python
  • C/C++

学习中:

  • Rust
  • JavaScript

目前在 99cloud 工作

– 2019 年 12 月 31 日更新

2020年的计划

2020年的计划

  • github issue和wiki记录平时的一些想法,坚持整理然后写入博客
  • 加深golang微服务的理解, 写一个便于重复利用的微服务项目
  • 等多关注云原声CNCF开源社区动态,争取做些贡献
  • 完成两本书的阅读和笔记记录(程序员修炼之道,代码整洁之道)
  • 日本旅游

其他

其他

如果你喜欢我的文章 or 我的项目,或者它们可以给你带来帮助。

You can buy me a coffee. ~

我的微信赞赏码

wechat

社交链接