From: Priit Laes Date: Sat, 7 Mar 2015 09:04:43 +0000 (+0200) Subject: Document Response.iter_lines() reentrancy issues X-Git-Tag: v2.6.0~7^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=4497a26c376c60360d05644b574be0db3c887fe3;p=services%2Fpython-requests.git Document Response.iter_lines() reentrancy issues --- diff --git a/docs/user/advanced.rst b/docs/user/advanced.rst index ed99066..a2fe653 100644 --- a/docs/user/advanced.rst +++ b/docs/user/advanced.rst @@ -399,6 +399,19 @@ set ``stream`` to ``True`` and iterate over the response with if line: print(json.loads(line)) +.. warning:: + + :class:`~requests.Response.iter_lines()` is not reentrant safe. + Calling this method multiple times causes some of the received data + being lost. In case you need to call it from multiple places, use + the resulting iterator object instead:: + + lines = r.iter_lines() + # Save the first line for later or just skip it + first_line = next(lines) + for line in lines: + print(line) + .. _proxies: Proxies diff --git a/requests/models.py b/requests/models.py index 4b2648f..ce1eb40 100644 --- a/requests/models.py +++ b/requests/models.py @@ -688,6 +688,8 @@ class Response(object): """Iterates over the response data, one line at a time. When stream=True is set on the request, this avoids reading the content at once into memory for large responses. + + .. note:: This method is not reentrant safe. """ pending = None