繁体   English   中英

扭曲使功能无阻塞

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM