Python 如何取消扭曲放大器延迟?

Python 如何取消扭曲放大器延迟?,python,twisted,deferred,asynchronous-messaging-protocol,Python,Twisted,Deferred,Asynchronous Messaging Protocol,我有一个Twisted客户机/服务器应用程序,其中一个客户机要求多个服务器使用AMP完成额外的工作。第一个响应客户机的服务器获胜——其他未完成的客户机请求应被取消 Deferred对象支持cancel(),可以将cancelor函数传递给Deferred的构造函数。但是,AMP的sendRemote()api不支持传递取消函数。此外,我希望Cancelor函数不仅在完成时停止本地请求的处理,而且从远程服务器删除请求 AMP的BoxDispatcher确实有一个stopReceivingBoxes

我有一个Twisted客户机/服务器应用程序,其中一个客户机要求多个服务器使用AMP完成额外的工作。第一个响应客户机的服务器获胜——其他未完成的客户机请求应被取消

Deferred
对象支持
cancel()
,可以将cancelor函数传递给
Deferred
的构造函数。但是,AMP的
sendRemote()
api不支持传递取消函数。此外,我希望Cancelor函数不仅在完成时停止本地请求的处理,而且从远程服务器删除请求

AMP的
BoxDispatcher
确实有一个
stopReceivingBoxes
方法,但这会导致所有延迟出错(这不是我想要的)


有办法取消AMP请求吗?

没有。目前,没有办法取消AMP请求

您无法取消AMP请求,因为AMP中在有线协议级别定义了无法向远程服务器发送消息以通知其停止处理的方法。这对于AMP来说是一个有趣的功能添加,但是如果要添加它,您不会通过允许用户传递他们自己的取消器来添加它;相反,AMP本身必须创建一个发送“取消”命令的取消函数

最后,添加此功能必须非常小心,因为一旦发送请求,不能保证它不会被完全处理;通常情况下,当远程端接收并处理取消请求时,远程端已经完成了处理并发送了回复。所以AMP应该实现异步取消