我正在使用pycurl编写应用程序,并且需要使其在Twisted中工作。我一直在寻找使pycurl以某种方式与Twisted框架兼容,或者使用现有的Twisted库。我被建议使用Twisted web,但是没有从pycurl到Twisted web的直接功能映射。有人能指出我正确的方向吗?
编辑:一个解决方案是在另一个线程中运行pycurl,但最好是,我希望使用非阻塞的Twisted框架或pycurl,所以我不必创建另一个线程。
答案 0 :(得分:2)
对于任何阻止函数,如果没有其他异步替代,Twisted允许您在另一个线程上运行它,但将其视为延迟。
from twisted.internet import threads
d = threads.deferToThread(pycurl.some_function)
d.addCallback(callback)
在Generatin Deferreds中查看将阻止代码与Twisted 集成。
答案 1 :(得分:2)
您是否考虑过使用Twisted web.client.Agent?它是非常基本的代理,但与Twisted事件循环很好地集成。