Skip to content

Commit 3760c0b

Browse files
author
Laurynas Butkus
committed
Upload files in parallel
1 parent 776ce33 commit 3760c0b

File tree

4 files changed

+15
-4
lines changed

4 files changed

+15
-4
lines changed

convertapi/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,6 @@
1515
conversion_timeout_delta = 10
1616
upload_timeout = 600
1717
download_timeout = 600
18+
max_parallel_uploads = 10
1819

1920
client = Client()

convertapi/task.py

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import convertapi
22

3-
from convertapi import file_param, format_detector
3+
from convertapi import file_param, format_detector, utils
44
from .result import Result
55

66
DEFAULT_URL_FORMAT = 'url'
@@ -34,9 +34,11 @@ def __normalize_params(self):
3434
if k == 'File':
3535
params[k] = file_param.build(v)
3636
elif k == 'Files':
37-
for idx, val in enumerate(v):
37+
results = utils.map_in_parallel(file_param.build, v, convertapi.max_parallel_uploads)
38+
39+
for idx, val in enumerate(results):
3840
key = '%s[%i]' % (k, idx)
39-
params[key] = file_param.build(val)
41+
params[key] = val
4042
else:
4143
params[k] = v
4244

convertapi/utils.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import multiprocessing
2+
3+
def map_in_parallel(f, values, pool_size):
4+
pool = multiprocessing.Pool(pool_size)
5+
results = pool.map_async(f, values)
6+
pool.close()
7+
pool.join()
8+
9+
return results.get()

tests/test_convertapi.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,5 +35,4 @@ def test_upload_io(self):
3535
def test_zip_files(self):
3636
files = ['examples/files/test.docx', 'examples/files/test.docx']
3737
result = convertapi.convert('zip', { 'Files': files })
38-
print result.file.url
3938
assert result.conversion_cost > 0

0 commit comments

Comments
 (0)