Уведомления

Группа в Telegram: @pythonsu

#1 Июнь 22, 2010 08:10:23

HnH
От:
Зарегистрирован: 2010-06-22
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

ForkingMixIn в SocketServer

Добрый день, точнее даже утро.
Я недавно начал изучать python (3.1), поэтому вполне возможно что-то упустил из вида. Пытаюсь создать многопроцессный TCP сервер с помощью модуля SocketServer. Для реализации многопоточности и многопроцессности есть 2 mixin'a: ThreadingMixIn и ForkingMixIn. В документации дан пример работы только с ThreadingMixIn, и этот пример у меня замечательно работает, про ForkingMixIn написано следующее: “The ForkingMixIn class is used in the same way, except that the server will spawn a new process for each request.”, что значит, что по сути должно работать абсолютно также. При этом попробывав переделать код под ForkingMixIn вылазит ошибка. Ниже переделаный код и сама ошибка

import socket
import threading
import multiprocessing
import socketserver

class MprocessingTCPRequestHandler(socketserver.BaseRequestHandler):
def handle(self):
data = self.request.recv(1024)
cur_thread = multiprocessing.current_process()
response = bytes("%s: %s" % (cur_thread.name, data),'ascii')
self.request.send(response)

class MprocessingTCPServer(socketserver.ForkingMixIn, socketserver.TCPServer):
pass

def client(ip, port, message):
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((ip, port))
sock.send(message)
response = sock.recv(1024)
print("Received: %s" % response)
sock.close()

if __name__ == "__main__":
HOST, PORT = "localhost", 9999
server = MprocessingTCPServer((HOST, PORT), MprocessingTCPRequestHandler)
ip, port = server.server_address

server_thread = threading.Thread(target=server.serve_forever)
server_thread.setDaemon(True)
server_thread.start()
print("Server loop running in thread:", server_thread.name)

client(ip, port, b"Hello World 1")
client(ip, port, b"Hello World 2")
client(ip, port, b"Hello World 3")

server.shutdown()


У кого-нибудь есть соображения как заставить его работать?



Офлайн

#2 Июнь 22, 2010 10:05:44

slav0nic
Команда
От: dp.ua
Зарегистрирован: 2006-05-07
Сообщения: 2260
Репутация: +  41  -
Профиль   Отправить e-mail  

ForkingMixIn в SocketServer

fork только под Unix есть

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version