gpt4 book ai didi

python - Python 服务器中的多线程

转载 作者:行者123 更新时间:2023-11-30 23:39:04 24 4
gpt4 key购买 nike

我正在为学校构建一个小型 Python 服务器脚本,它必须读取文件并将其发送到客户端。

现在,我需要服务器同时响应来自客户端的多个请求。此时它只接受 1 个客户端...并且在客户端得到应答后,它会转到下一个客户端。

我的老师告诉我使用多个进程/线程来实现这一点。我是 Python 新手,所以我不知道如何管理它。

我怎样才能做到这一点?

这是我的代码:

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 
s.bind((host,port))
s.listen(backlog)
while 1:
print "server ready, waiting..."
client, address = s.accept()
print "recvd client", address
data = client.recv(size)
if data:

parametro_data = data.split(' ')
if(parametro_data[0] == '/GET'):

theFile = parametro_data[1].replace('\r\n','')

if os.path.isfile(theFile):
f = open(theFile, 'r')
for line in f:
client.send(line)
f.close()
else:
client.send("File not exists")

client.close()

最佳答案

您应该做的是将单个请求捕获服务器线程的时间(即在 s.accept() 行返回之后)保持在最低限度。一种常见的方法是在该线程之后直接生成一个线程,然后单独处理请求。然后,您可以直接返回等待下一个请求(即再次接受),而不会因另一个线程中仍在进行的处理而暂停。

我还建议您查看socketserver模块,因为它已经为您提供了更高级别的功能。您只需为连接定义一个处理程序,然后使用该处理程序创建服务器,并将服务器设置为 “serve forever” .

关于python - Python 服务器中的多线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13885582/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com