Add sleep(3s) to send images

This commit is contained in:
Kiryl
2021-12-01 14:21:34 +03:00
parent a5f2a47edf
commit ccd18fed7a
2 changed files with 41 additions and 25 deletions

View File

@@ -34,8 +34,24 @@ class Access:
self.get_token() self.get_token()
self.refreshing.set() self.refreshing.set()
def sleep(timeout: float, retry=3):
def decorator(function):
def wrapper(*args, **kwargs):
retries = 0
while retries < retry:
try:
value = function(*args, **kwargs)
if value is not None:
return
except:
time.sleep(timeout)
retries += 1
return wrapper
return decorator
def set_credentials(self, url): def set_credentials(self, url):
folder_path = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) folder_path = os.path.dirname(
os.path.dirname(os.path.abspath(__file__)))
config_path = os.path.join(folder_path, "config/api_config.json") config_path = os.path.join(folder_path, "config/api_config.json")
with open(config_path, "r") as f: with open(config_path, "r") as f:
params = json.load(f) params = json.load(f)
@@ -82,7 +98,8 @@ class Access:
response = requests.post(f'{self.url}/token', json=json_form) response = requests.post(f'{self.url}/token', json=json_form)
if response.status_code == 400: if response.status_code == 400:
raise Exception('400 Bad request: wrong request parameters for refreshing.') raise Exception(
'400 Bad request: wrong request parameters for refreshing.')
elif response.status_code == 401: elif response.status_code == 401:
self.get_token() self.get_token()
elif response.status_code == 200: elif response.status_code == 200:
@@ -100,7 +117,8 @@ class Access:
self.refresh_token() self.refresh_token()
self.refreshing.wait() self.refreshing.wait()
response = requests.get(f'{self.url}/doc-convert/{book_id}/file', headers=self.headers) response = requests.get(
f'{self.url}/doc-convert/{book_id}/file', headers=self.headers)
if response.status_code == 404: if response.status_code == 404:
raise FileNotFoundError('404 Not Found: file have not found.') raise FileNotFoundError('404 Not Found: file have not found.')
@@ -112,28 +130,26 @@ class Access:
return content return content
@sleep(3)
def send_image(self, img_path, doc_id, img_content: bytes = None): def send_image(self, img_path, doc_id, img_content: bytes = None):
if self.is_time_for_refreshing(): if self.is_time_for_refreshing():
self.refresh_token() self.refresh_token()
self.refreshing.wait() self.refreshing.wait()
img_obj = BytesIO(img_content) if img_content else open(img_path, 'rb') img_obj = BytesIO(img_content) if img_content else open(img_path, 'rb')
files = { files = {
'image': (os.path.basename(img_path), img_obj) 'image': (os.path.basename(img_path), img_obj)
} }
response = requests.post(f'{self.url}/doc-convert/image', files=files, headers=self.headers) response = requests.post(
f'{self.url}/doc-convert/image', files=files, headers=self.headers)
img_obj.close() img_obj.close()
if response.status_code == 400: if response.status_code == 200:
self.update_status(doc_id, self.ERROR)
raise Exception(f'400 Bad request: {response.json()["message"]}.')
elif response.status_code == 200:
img_url = response.json()['imageUrl'] img_url = response.json()['imageUrl']
else: else:
self.update_status(doc_id, self.ERROR) self.update_status(doc_id, self.ERROR)
raise Exception(f'{response.status_code}') raise Exception(
f'{response.status_code} Bad request: {response.json()["message"]}.')
return img_url return img_url
def send_book(self, doc_id, content): def send_book(self, doc_id, content):
@@ -144,27 +160,26 @@ class Access:
json_content = { json_content = {
'json': json.dumps(content) 'json': json.dumps(content)
} }
response = requests.post(f'{self.url}/doc-convert/{doc_id}/import', json=json_content, headers=self.headers) response = requests.post(
f'{self.url}/doc-convert/{doc_id}/import', json=json_content, headers=self.headers)
if response.status_code == 400: if response.status_code == 200:
self.update_status(doc_id, self.ERROR)
raise Exception(f'400 Bad request')
elif response.status_code == 200:
pass pass
else: else:
self.update_status(doc_id, self.ERROR) self.update_status(doc_id, self.ERROR)
raise Exception(f'{response.status_code}') raise Exception(
f'{response.status_code} Bad request: {response.json()["message"]}.')
def update_status(self, doc_id, status): def update_status(self, doc_id, status):
if self.is_time_for_refreshing(): if self.is_time_for_refreshing():
self.refresh_token() self.refresh_token()
self.refreshing.wait() self.refreshing.wait()
response = requests.patch(f'{self.url}/doc-convert/{doc_id}/status/{status}', headers=self.headers) response = requests.patch(
f'{self.url}/doc-convert/{doc_id}/status/{status}', headers=self.headers)
if response.status_code == 400: if response.status_code == 200:
raise Exception(f'400 Bad request')
elif response.status_code == 200:
pass pass
else: else:
raise Exception(f'{response.status_code}') raise Exception(
f'{response.status_code} Bad request: {response.json()["message"]}.')

View File

@@ -33,7 +33,8 @@ def update_src_links_in_images(body_tag: Tag,
href2img_content: dict, href2img_content: dict,
path_to_html, path_to_html,
access=None, access=None,
path2aws_path=None): path2aws_path=None,
book_id=None):
img_tags = body_tag.find_all('img') img_tags = body_tag.find_all('img')
for img in img_tags: for img in img_tags:
@@ -51,11 +52,11 @@ def update_src_links_in_images(body_tag: Tag,
new_folder = path2aws_path[path_to_img_from_root] new_folder = path2aws_path[path_to_img_from_root]
else: else:
new_folder = save_image_to_aws( new_folder = save_image_to_aws(
access, path_to_img_from_root, img_content, 'book_id') access, path_to_img_from_root, img_content, book_id)
path2aws_path[path_to_img_from_root] = new_folder path2aws_path[path_to_img_from_root] = new_folder
else: else:
new_folder = save_image_locally( new_folder = save_image_locally(
path_to_img_from_root, img_content, 'book_id') path_to_img_from_root, img_content, book_id)
img.attrs['src'] = str(new_folder) img.attrs['src'] = str(new_folder)
if img.attrs.get('width'): if img.attrs.get('width'):