[英]Twisted making a function non-blocking
我正在使用twist来制作async
网络服务器(以了解甚至基于异步编程的思想)。 考虑到这种情况,服务器在某个端点上收到GET
请求时,例如http:localhost:8000/api/v1/calc_fact?num=1000
会计算出http:localhost:8000/api/v1/calc_fact?num=1000
的阶乘并返回结果。 这部分很容易获得。 我也知道延迟API。 我如何定义我的函数calc_factorial()
以便它返回延迟值,并且总体结果是非阻塞的。
我该如何解决这个问题?
我做了类似的事情。
在您的资源中,您需要返回一个server.NOT_DONE_YET并添加calc_factorial延迟回调,如下所示
def render_GET(self, request):
d = Deferred()
reactor.callLater(1, d.callback, None)
d.addCallback(self.calc_factorial, request)
d.addErrback(rror_handler, request)
return server.NOT_DONE_YET
然后在calc_factorial内部,您将写入请求:
def calc_factorial(self, request):
# something something
request.write("factorial calc done")
request.finish()
一旦您写完请求,它将触发NOT_DONE_YET
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.