Python twisted:2个连续的同步请求?

时间:2017-08-06 13:40:27

标签: python twisted webclient

我使用Python扭曲库将客户端请求发送到Web服务器。我使用twisted而不是请求,因为Web服务器是恶意软件命令和控制服务器,并且请求必须遵循非常严格的规则:例如,标头序列必须正确。请求不会让我选择确定这一点。扭曲,这是有效的。但是,我真的不需要扭曲的异步开销 - 但必须遵循它,所以我可以使用它...我现在的主要问题是在处理1(同步)请求后,我无法发送第二个,因为反应堆停止了,无法重新启动......并且无法创建第二个反应堆。但这是一项如此简单的任务,必须有办法吗?我目前的代码基本上是这样的:

class WebClientContextFactory(ClientContextFactory):
  def getContext(self, hostname, port):
    return ClientContextFactory.getContext(self)

receivedData = None

def cbBody(body):
    global receivedData
    receivedData = body

def cbResponse(response):
    d = readBody(response)
    d.addCallback(cbBody)
    return d

class DataProducer(object):

    def __init__(self, body):
        self.body = body
        self.length = len(body)

    def startProducing(self, consumer):
        consumer.write(self.body)
        return defer.succeed(None)

    def pauseProducing(self):
        pass

    def stopProducing(self):
        pass

....

contextFactory = WebClientContextFactory()
agent = Agent(reactor, contextFactory)

....
d = agent.request('POST', url, Headers(headers), DataProducer(postData))
d.addCallbacks(cbResponse, err)
d.addCallback(lambda ignored: reactor.stop())
reactor.run()
reply = receivedData

最后5行在稍后的第二次请求中重复,但我得到一个错误,即reactor无法重启。这可能是一个非常愚蠢的问题,但如何解决呢?

0 个答案:

没有答案