我使用Python twisted库将客户机请求发送到web服务器。我使用twisted而不是requests,因为web服务器是一个恶意软件命令和控制服务器,请求必须遵循非常严格的规则:例如,头的序列必须正确。请求没有给我决定这个的选项。有了twisted,就可以了。然而,我并不需要twisted的异步开销,而是必须遵循它,这样我就可以使用它。。。我现在的主要问题是,在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不可重启。这可能是一个非常愚蠢的问题,但如何解决呢?在
目前没有回答
相关问题 更多 >
编程相关推荐