如何在Twisted Python中使用pycurl?

时间:2015-09-03 22:46:22

标签: python curl twisted pycurl twisted.web

我正在使用pycurl编写应用程序,并且需要使其在Twisted中工作。我一直在寻找使pycurl以某种方式与Twisted框架兼容,或者使用现有的Twisted库。我被建议使用Twisted web,但是没有从pycurl到Twisted web的直接功能映射。有人能指出我正确的方向吗?

编辑:一个解决方案是在另一个线程中运行pycurl,但最好是,我希望使用非阻塞的Twisted框架或pycurl,所以我不必创建另一个线程。

2 个答案:

答案 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事件循环很好地集成。