Skip to content

Commit db42274

Browse files
authored
Merge pull request #137 from scaleapi/da-fixes
Various fixes
2 parents 286c2cd + 605a523 commit db42274

File tree

3 files changed

+34
-10
lines changed

3 files changed

+34
-10
lines changed

nucleus/__init__.py

Lines changed: 26 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -324,7 +324,7 @@ def populate_dataset(
324324
self,
325325
dataset_id: str,
326326
dataset_items: List[DatasetItem],
327-
batch_size: int = 30,
327+
batch_size: int = 20,
328328
update: bool = False,
329329
):
330330
"""
@@ -495,6 +495,9 @@ async def _make_files_request(
495495
files,
496496
route: str,
497497
session: aiohttp.ClientSession,
498+
retry_attempt=0,
499+
max_retries=3,
500+
sleep_intervals=(1, 3, 9),
498501
):
499502
"""
500503
Makes an async post request with files to a Nucleus endpoint.
@@ -519,6 +522,7 @@ async def _make_files_request(
519522
)
520523

521524
for sleep_time in RetryStrategy.sleep_times + [-1]:
525+
522526
async with session.post(
523527
endpoint,
524528
data=form,
@@ -542,15 +546,27 @@ async def _make_files_request(
542546
continue
543547

544548
if not response.ok:
545-
self.handle_bad_response(
546-
endpoint,
547-
session.post,
548-
aiohttp_response=(
549-
response.status,
550-
response.reason,
551-
data,
552-
),
553-
)
549+
if retry_attempt < max_retries:
550+
time.sleep(sleep_intervals[retry_attempt])
551+
retry_attempt += 1
552+
return self._make_files_request(
553+
files,
554+
route,
555+
session,
556+
retry_attempt,
557+
max_retries,
558+
sleep_intervals,
559+
)
560+
else:
561+
self.handle_bad_response(
562+
endpoint,
563+
session.post,
564+
aiohttp_response=(
565+
response.status,
566+
response.reason,
567+
data,
568+
),
569+
)
554570

555571
return data
556572

nucleus/dataset.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,6 +261,9 @@ def append(
261261
'ignored_items': int,
262262
}
263263
"""
264+
assert (
265+
batch_size is None or batch_size < 30
266+
), "Please specify a batch size smaller than 30 to avoid timeouts."
264267
dataset_items = [
265268
item for item in items if isinstance(item, DatasetItem)
266269
]
@@ -270,6 +273,9 @@ def append(
270273
"You must append either DatasetItems or Scenes to the dataset."
271274
)
272275
if scenes:
276+
assert (
277+
asynchronous
278+
), "In order to avoid timeouts, you must set asynchronous=True when uploading scenes."
273279
return self.append_scenes(scenes, update, asynchronous)
274280

275281
check_for_duplicate_reference_ids(dataset_items)

tests/test_scene.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -252,6 +252,7 @@ def test_scene_add_frame():
252252
}
253253

254254

255+
@pytest.mark.skip("Deactivated sync upload for scenes")
255256
def test_scene_upload_sync(dataset):
256257
payload = TEST_LIDAR_SCENES
257258
scenes = [
@@ -272,6 +273,7 @@ def test_scene_upload_sync(dataset):
272273
assert response["new_scenes"] == len(scenes)
273274

274275

276+
@pytest.mark.skip("Deactivated sync upload for scenes")
275277
@pytest.mark.integration
276278
def test_scene_and_cuboid_upload_sync(dataset):
277279
payload = TEST_LIDAR_SCENES

0 commit comments

Comments
 (0)