Add sleep between seeded offers
All checks were successful
Build Docker Image / build (push) Successful in 2m7s
All checks were successful
Build Docker Image / build (push) Successful in 2m7s
This commit is contained in:
@@ -5,6 +5,7 @@ Creates offers via Temporal workflow so they sync to the graph.
|
|||||||
import random
|
import random
|
||||||
import uuid
|
import uuid
|
||||||
from decimal import Decimal
|
from decimal import Decimal
|
||||||
|
import time
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
from django.core.management.base import BaseCommand
|
from django.core.management.base import BaseCommand
|
||||||
@@ -128,6 +129,12 @@ class Command(BaseCommand):
|
|||||||
default=200,
|
default=200,
|
||||||
help="Batch size for bulk_create (default: 200)",
|
help="Batch size for bulk_create (default: 200)",
|
||||||
)
|
)
|
||||||
|
parser.add_argument(
|
||||||
|
"--sleep-ms",
|
||||||
|
type=int,
|
||||||
|
default=0,
|
||||||
|
help="Sleep between offer creations in milliseconds (default: 0)",
|
||||||
|
)
|
||||||
parser.add_argument(
|
parser.add_argument(
|
||||||
"--geo-url",
|
"--geo-url",
|
||||||
type=str,
|
type=str,
|
||||||
@@ -186,6 +193,7 @@ class Command(BaseCommand):
|
|||||||
use_workflow = not options["no_workflow"]
|
use_workflow = not options["no_workflow"]
|
||||||
use_bulk = options["bulk"]
|
use_bulk = options["bulk"]
|
||||||
bulk_size = max(1, options["bulk_size"])
|
bulk_size = max(1, options["bulk_size"])
|
||||||
|
sleep_ms = max(0, options["sleep_ms"])
|
||||||
geo_url = options["geo_url"]
|
geo_url = options["geo_url"]
|
||||||
odoo_url = options["odoo_url"]
|
odoo_url = options["odoo_url"]
|
||||||
product_filter = options["product"]
|
product_filter = options["product"]
|
||||||
@@ -244,7 +252,7 @@ class Command(BaseCommand):
|
|||||||
return
|
return
|
||||||
if use_workflow:
|
if use_workflow:
|
||||||
created_offers = self._create_offers_via_workflow(
|
created_offers = self._create_offers_via_workflow(
|
||||||
offers_count, hubs, products, supplier_location_ratio
|
offers_count, hubs, products, supplier_location_ratio, sleep_ms
|
||||||
)
|
)
|
||||||
elif use_bulk:
|
elif use_bulk:
|
||||||
created_offers = self._create_offers_direct_bulk(
|
created_offers = self._create_offers_direct_bulk(
|
||||||
@@ -252,7 +260,7 @@ class Command(BaseCommand):
|
|||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
created_offers = self._create_offers_direct(
|
created_offers = self._create_offers_direct(
|
||||||
offers_count, hubs, products, supplier_location_ratio
|
offers_count, hubs, products, supplier_location_ratio, sleep_ms
|
||||||
)
|
)
|
||||||
self.stdout.write(self.style.SUCCESS(f"Created {len(created_offers)} offers"))
|
self.stdout.write(self.style.SUCCESS(f"Created {len(created_offers)} offers"))
|
||||||
|
|
||||||
@@ -620,7 +628,9 @@ class Command(BaseCommand):
|
|||||||
"longitude": supplier.longitude,
|
"longitude": supplier.longitude,
|
||||||
}
|
}
|
||||||
|
|
||||||
def _create_offers_via_workflow(self, count: int, hubs: list, products: list, supplier_ratio: float) -> list:
|
def _create_offers_via_workflow(
|
||||||
|
self, count: int, hubs: list, products: list, supplier_ratio: float, sleep_ms: int
|
||||||
|
) -> list:
|
||||||
"""Create offers via Temporal workflow (syncs to graph)"""
|
"""Create offers via Temporal workflow (syncs to graph)"""
|
||||||
created = []
|
created = []
|
||||||
suppliers = list(SupplierProfile.objects.all())
|
suppliers = list(SupplierProfile.objects.all())
|
||||||
@@ -658,10 +668,14 @@ class Command(BaseCommand):
|
|||||||
created.append(offer_uuid)
|
created.append(offer_uuid)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.stdout.write(self.style.ERROR(f" [{idx+1}/{count}] Failed: {e}"))
|
self.stdout.write(self.style.ERROR(f" [{idx+1}/{count}] Failed: {e}"))
|
||||||
|
if sleep_ms:
|
||||||
|
time.sleep(sleep_ms / 1000.0)
|
||||||
|
|
||||||
return created
|
return created
|
||||||
|
|
||||||
def _create_offers_direct(self, count: int, hubs: list, products: list, supplier_ratio: float) -> list:
|
def _create_offers_direct(
|
||||||
|
self, count: int, hubs: list, products: list, supplier_ratio: float, sleep_ms: int
|
||||||
|
) -> list:
|
||||||
"""Create offers directly in DB (no workflow, no graph sync)"""
|
"""Create offers directly in DB (no workflow, no graph sync)"""
|
||||||
created = []
|
created = []
|
||||||
suppliers = list(SupplierProfile.objects.all())
|
suppliers = list(SupplierProfile.objects.all())
|
||||||
@@ -696,6 +710,8 @@ class Command(BaseCommand):
|
|||||||
description=f"{product_name} available from {hub['name']} in {hub['country']}",
|
description=f"{product_name} available from {hub['name']} in {hub['country']}",
|
||||||
)
|
)
|
||||||
created.append(offer)
|
created.append(offer)
|
||||||
|
if sleep_ms:
|
||||||
|
time.sleep(sleep_ms / 1000.0)
|
||||||
|
|
||||||
return created
|
return created
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user