我有正在扫描文件的 ICAP 服务器和运行 pyicap 库的 ICAP 客户端(https://github.com/netom/pyicap)
我想允许用户通过 ICAP 客户端开始下载文件,但在 ICAP 服务器没有响应时保留最后几个字节。
如果 ICAP 允许请求,python ICAP 客户端将释放最后一个字节,用户将获得一个文件。但如果 ICAP 拒绝此请求,则不得释放最后一个块,并且 ICAP 客户端必须向客户端发送取消或中止。
我有很多文件
chunk_size = 4096 if file_size > 4096 else file_size / 2
# slice file into two chunks or lots of chunks
chunks = 2 if file_size / chunk_size < 1 else file_size / chunk_size
self.send_headers(True)
while chunks > 1:
data = upstream.read(chunk_size)
if not data:
print("no more data")
break
self.write_chunk(data)
chunks -= 1
如果ICAP允许这个请求,我可以发送最后一个块并且一切正常,但如果它拒绝我不知道如何中止客户端下载这个文件。
如何向客户端发送取消或中止?