У меня есть это изображение докера, которое wgetting страницы для меня, иногда, однако, контейнер будет выходить с ненулевым кодом состояния. Если контейнер запущен в отдельном режиме, я не могу уловить проблемы. Я пытаюсь сделать запрос, пока он не проходит без ошибки (в отключенном режиме). Будет ли что-то подобное обойти проблему:
import docker
import random
import time
from collections import namedtuple
URL = namedtuple('URL', 'val')
URLs = (
URL('https://www.google.com'),
URL('https://www.yahoo.com')
)
client = docker.from_env()
local_dir = '/home/ubuntu/git/docker-scraper/data-test'
volumes = {local_dir: {'bind': '/download/', 'mode': 'rw'}}
def make_request(url):
environment = {'URL': url}
try:
print("Working on URL: {}".format(url))
client.containers.run('wgettor:latest', detach=True, auto_remove=True, volumes=volumes, environment=environment)
time.sleep(random.random())
except docker.errors.ContainerError:
# try again, until it works
make_request(url)
if __name__ == '__main__':
for url in URLs:
make_request(url.val)
Что я пытаюсь понять, так это то, что, хотя клиент работает в автономном режиме, мы получим ошибку, если она произойдет, в этом методе?