我正在开发一个 python 项目,对 csv 文件进行一些分析。我知道 csv 文件没有明确定义的标准,但据我理解定义(https://www.rfc-editor.org/rfc/rfc4180#page-2),我认为 csv 文件不应该包含多个表。这种想法是正确的,还是我误解了定义?
您多久会在 csv 中看到多个表?
简而言之,我的问题:我不知道选择器如何知道哪个套接字应该首先读取或写入。
它是一个可以处理多连接的服务器,其流程应该是:
这就是发生的情况,但是如果创建的服务器套接字首先写入,则连接将立即关闭或抛出异常(?),因为它甚至不调用 send 并且客户端套接字不会接收任何内容。那么选择器如何知道哪些套接字应该首先准备好写入/读取呢?为了理解这一点我错过了哪些信息?
服务器:
import socket
import selectors
import types
host = "127.0.0.1"
port = 63210
def accept_wrapper(sock):
conn, addr = sock.accept()
print('accepted connection from', addr)
conn.setblocking(False)
data = types.SimpleNamespace(addr=addr, inb=b'', outb=b'')
events = selectors.EVENT_READ | selectors.EVENT_WRITE
sel.register(conn, events, data=data)
def service_connection(key, mask):
sock = key.fileobj
data = key.data
if mask & selectors.EVENT_READ:
recv_data = sock.recv(1024)
if recv_data:
data.outb += recv_data
else:
print('closing connection to', data.addr)
sel.unregister(sock)
sock.close()
if mask & selectors.EVENT_WRITE: …
Run Code Online (Sandbox Code Playgroud)