Python 从splunk REST API导出/流式传输大量结果

Python 从splunk REST API导出/流式传输大量结果,python,rest,splunk,Python,Rest,Splunk,我需要从splunk导出大量事件。因此,出于性能原因,我在python代码中直接使用RESTAPI,而不是使用Splunk SDK本身 我使用以下curl命令导出结果。这也可以通过以下方式获得:- 我尝试使用python的http函数对此进行模拟,如下所示:- //assume i have authenticated to splunk and have a session key base_url = "http://splunkhost:port" search_job_urn = '/

我需要从splunk导出大量事件。因此,出于性能原因,我在python代码中直接使用RESTAPI,而不是使用Splunk SDK本身

我使用以下curl命令导出结果。这也可以通过以下方式获得:-

我尝试使用python的http函数对此进行模拟,如下所示:-

//assume i have authenticated to splunk and have a session key
base_url = "http://splunkhost:port"

search_job_urn = '/services/search/jobs/export'

myhttp = httplib2.Http(disable_ssl_certificate_validation=True)

searchjob = myhttp.request(base_url + search_job_urn, 'POST', headers=
{'Authorization': 'Splunk %s' % sessionKey},
body=urllib.urlencode({'search':'search index=indexname sourcetype=sourcename'}))[1]

print searchjob
最后一次打印将继续打印所有结果,直到完成。对于大型查询,我会得到“内存错误”。我需要能够以块(比如50000)的形式读取结果,并将其写入一个文件,并重置searchjob的缓冲区。我怎样才能做到这一点

//assume i have authenticated to splunk and have a session key
base_url = "http://splunkhost:port"

search_job_urn = '/services/search/jobs/export'

myhttp = httplib2.Http(disable_ssl_certificate_validation=True)

searchjob = myhttp.request(base_url + search_job_urn, 'POST', headers=
{'Authorization': 'Splunk %s' % sessionKey},
body=urllib.urlencode({'search':'search index=indexname sourcetype=sourcename'}))[1]

print searchjob