mirror of https://github.com/ansible/ansible.git
Stream image data in load_image() to avoid out-of-memory
Reading the entire tar file into memory can result in out-of-memory conditions such as this traceback: Traceback (most recent call last): File "/tmp/ansible_YELTSu/ansible_module_docker_image.py", line 486, in load_image self.client.load_image(image_data) File "/usr/local/lib/python2.7/dist-packages/docker/api/image.py", line 147, in load_image res = self._post(self._url("/images/load"), data=data) ... File "/usr/lib/python2.7/httplib.py", line 997, in endheaders self._send_output(message_body) File "/usr/lib/python2.7/httplib.py", line 848, in _send_output msg += message_body MemoryError Luckily docker-py's load_image(), which calls requests post(), accepts a file-like object instead of a string. Pass in the file object to avoid reading the full file into memory. This allows larger tar files to load succesfully. Signed-off-by: Stefan Hajnoczi <stefanha@gmail.com>pull/18777/head
parent
42a38f9141
commit
38013de366
Loading…
Reference in New Issue