取消xmlrpc客户端请求?

2024-04-27 04:55:38 发布

您现在位置:Python中文网/ 问答频道 /正文

是否可以以某种方式取消xmlrpc客户机请求?在

假设在一个线程中我有如下代码:

svr = xmlrpclib.ServerProxy('http://localhost:9092')
svr.DoSomethingWhichNeedTime()

我不是说什么暂停。。。有时从另一个线程我可以得到事件取消我的工作。然后我要取消这个请求。在

我知道我可以用twisted但是,用标准xmlrpclib可以做到吗?在


Tags: 代码localhosthttp标准客户机方式事件twisted
0条回答
网友
1楼 · 发布于 2024-04-27 04:55:38

首先,它必须在服务器端实现,而不是在客户机(xmlrpclib)中实现。如果您只是中断对XML-RPC服务器的HTTP请求,就不能保证服务器上运行的长进程会被中断。所以xmlrpclib不能有这个功能。在

如果要实现这种行为,需要创建两种类型的请求。第一种类型的请求将告诉您的服务器启动一些长进程。它必须在后台(在另一个线程或进程中)执行,并且XML-RPC服务器必须发送响应(“进程已启动!”)立即通知客户。当您想停止进程时,客户机必须发送另一个请求,告诉您的服务器停止执行进程。在

网友
2楼 · 发布于 2024-04-27 04:55:38

是的,如果你真的想做肮脏的黑客。。。。在

基本上,ServerProxy对象保留一个指向底层socket/http连接的句柄。如果您深入到这些内部并简单地关闭()套接字,您的客户端代码将以异常方式爆炸。如果你处理得当,那你就取消了。在

如果您通过transport参数为ServerProxy注册自己的传输类,并给它一些cancel方法来执行您想要的操作,那么您可以做得更明智一些。在

这不会阻止服务器处理事情,除非它对直接关闭通道做出反应。在

相关问题 更多 >