【发布时间】:2017-01-05 09:19:40
【问题描述】:
我正在使用twisted 来制作async 网络服务器(学习甚至基于异步编程的想法)。考虑这种情况,服务器在某个端点收到GET 请求时,例如http:localhost:8000/api/v1/calc_fact?num=1000 计算1000 的阶乘并返回结果。这部分很容易获得。我也知道延迟 API。我如何定义我的函数calc_factorial() 以便它返回一个延迟并且整体结果是非阻塞的。
我该如何解决这个问题?
【问题讨论】:
-
使用
deferToThread如twistedmatrix.com/documents/11.0.0/core/howto/threading.html所示 -
@KlausD。这是唯一的方法吗?说 insted 使用这个函数我的函数在这种情况下调用 db 这也是正确的方法吗?
-
不,有几种方法。对于 DB 调用,twisted 具有异步的数据库模块。
-
@KlausD。谢谢回复。我希望我明白了
-
@KlausD。线程也是不可扩展的。这就是使用
twisted的全部意义所在。据我了解,defetToThread 只是将方法交给线程并以线程安全的方式处理回调和错误返回。但是再次使用twisted有什么用呢?
标签: python asynchronous twisted