我想用prefork异步体系结构实现一个web服务器。你知道吗
我使用python3.4并实现自己的事件循环。我创建套接字,使其非阻塞,然后派生进程。之后,我初始化事件循环的DefaultSelector。但我在不同的过程中收到相同的事件。然后在其中一个进程中,我得到IOBlockingError,因为事件已经被处理了。我应该如何使用DefaultSelector来避免在不同的进程中获得相同的事件?你知道吗
这是我的密码:
import socket
import os
from selectors import DefaultSelector, EVENT_READ, EVENT_WRITE
def main():
def readable(soc, mask):
try:
conn, addr = sock.accept()
except:
print('here the problem')
return
selector.register(conn, EVENT_READ, readable2)
def readable2(conn, mask):
selector.unregister(conn)
data = conn.recv(100000)
selector.register(conn, EVENT_WRITE, writable)
def writable(conn, mask):
conn.send(b'HTTP/1.1 200 OK\r\n\r\n')
selector.unregister(conn)
conn.close()
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
sock.setblocking(False)
sock.bind(('', 8070))
sock.listen(1000)
os.fork()
selector = DefaultSelector()
selector.register(sock.fileno(), EVENT_READ, readable)
while True:
events = selector.select()
for key, mask in events:
callb = key.data
callb(key.fileobj, mask)
if __name__ == "__main__":
main()
目前没有回答
相关问题 更多 >
编程相关推荐