Skip to content

Commit fa0d42a

Browse files
committed
fix: Use batching for recipe addition to prevent 431 errors (request too large)
1 parent bc76e90 commit fa0d42a

File tree

1 file changed

+18
-8
lines changed

1 file changed

+18
-8
lines changed

scraper/add_recipes.py

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
load_dotenv()
1212

1313
POST_RECIPE_URL = os.getenv("POST_RECIPE_URL")
14+
BATCH_SIZE = 500
1415

1516

1617
def add_recipes_from_file(file_path: str) -> None:
@@ -22,14 +23,23 @@ def add_recipes_from_file(file_path: str) -> None:
2223
# Convert dict to list of recipes
2324
recipe_list = list(recipes.values())
2425

25-
# Send all recipes in a single batch request
26-
resp = requests.post(POST_RECIPE_URL, json=recipe_list)
27-
data = resp.json()
28-
29-
# Truncate the recipe IDs since there may be too many
30-
if "recipe_ids" in data:
31-
data["recipe_ids"] = data["recipe_ids"][:10]
32-
print(json.dumps(data, indent=4))
26+
# Send all recipes in batches
27+
print(
28+
f"Sending {len(recipe_list)} recipes to API using {len(recipe_list) // BATCH_SIZE + 1} batches"
29+
)
30+
for i in range(0, len(recipe_list), BATCH_SIZE):
31+
current_batch = i // BATCH_SIZE + 1
32+
batch = recipe_list[i : i + BATCH_SIZE]
33+
resp = requests.post(POST_RECIPE_URL, json=batch)
34+
data = resp.json()
35+
36+
# Truncate response to first 5 recipe IDs
37+
if "recipe_ids" in data:
38+
data["recipe_ids"] = data["recipe_ids"][:5]
39+
40+
print(f"Response from batch {current_batch}:")
41+
print(json.dumps(data, indent=4))
42+
print()
3343

3444

3545
if __name__ == "__main__":

0 commit comments

Comments
 (0)