@@ -237,7 +237,7 @@ def parallel_bulk(client, actions, thread_count=4, chunk_size=500,
237
237
pool .join ()
238
238
239
239
def scan (client , query = None , scroll = '5m' , raise_on_error = True ,
240
- preserve_order = False , size = 1000 , ** kwargs ):
240
+ preserve_order = False , size = 1000 , request_timeout = None , ** kwargs ):
241
241
"""
242
242
Simple abstraction on top of the
243
243
:meth:`~elasticsearch.Elasticsearch.scroll` api - a simple iterator that
@@ -260,6 +260,7 @@ def scan(client, query=None, scroll='5m', raise_on_error=True,
260
260
can be an extremely expensive operation and can easily lead to
261
261
unpredictable results, use with caution.
262
262
:arg size: size (per shard) of the batch send at each iteration.
263
+ :arg request_timeout: explicit timeout for each call to ``scan``
263
264
264
265
Any additional keyword arguments will be passed to the initial
265
266
:meth:`~elasticsearch.Elasticsearch.search` call::
@@ -275,7 +276,8 @@ def scan(client, query=None, scroll='5m', raise_on_error=True,
275
276
body = query .copy () if query else {}
276
277
body ["sort" ] = "_doc"
277
278
# initial search
278
- resp = client .search (body = query , scroll = scroll , size = size , ** kwargs )
279
+ resp = client .search (body = query , scroll = scroll , size = size ,
280
+ request_timeout = request_timeout , ** kwargs )
279
281
280
282
scroll_id = resp .get ('_scroll_id' )
281
283
if scroll_id is None :
@@ -288,7 +290,7 @@ def scan(client, query=None, scroll='5m', raise_on_error=True,
288
290
if first_run :
289
291
first_run = False
290
292
else :
291
- resp = client .scroll (scroll_id , scroll = scroll )
293
+ resp = client .scroll (scroll_id , scroll = scroll , request_timeout = request_timeout )
292
294
293
295
for hit in resp ['hits' ]['hits' ]:
294
296
yield hit
0 commit comments