summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAzka Nathan <darizkyfaz@gmail.com>2026-01-06 17:58:13 +0700
committerAzka Nathan <darizkyfaz@gmail.com>2026-01-06 17:58:13 +0700
commit52767afb54fe6e2ef2e2a976a5730c9299ef2ea0 (patch)
tree2d26c389ef1b187ac40f1a17d7ea2c7b0bdab12f
parent05ad7eb27b801542df03cb2896e0c2d9e0faf592 (diff)
push
-rwxr-xr-xfixco_custom/models/detail_order.py39
1 files changed, 38 insertions, 1 deletions
diff --git a/fixco_custom/models/detail_order.py b/fixco_custom/models/detail_order.py
index 1c4c983..674f11a 100755
--- a/fixco_custom/models/detail_order.py
+++ b/fixco_custom/models/detail_order.py
@@ -139,6 +139,27 @@ class DetailOrder(models.Model):
except Exception as e:
raise UserError(_("Error extracting order ID: %s") % str(e))
+ # def process_queue_item_detail(self, limit=100):
+ # domain = [
+ # ('execute_status', '=', 'detail_order'),
+ # '!',
+ # '|',
+ # ('json_ginee', 'like', '"orderStatus": "PENDING_PAYMENT"'),
+ # ('json_ginee', 'like', '"channel":"BLIBLI_ID"'),
+ # ]
+
+ # records = self.search(domain, order='create_date asc', limit=limit)
+
+ # for i, rec in enumerate(records, 1):
+ # try:
+ # rec.execute_queue_detail()
+ # if i % 10 == 0:
+ # self.env.cr.commit()
+ # except Exception as e:
+ # _logger.error("Failed to process record %s: %s", rec.id, str(e))
+ # self.env.cr.rollback()
+
+ # self.env.cr.commit()
def process_queue_item_detail(self, limit=100):
domain = [
('execute_status', '=', 'detail_order'),
@@ -153,10 +174,26 @@ class DetailOrder(models.Model):
for i, rec in enumerate(records, 1):
try:
rec.execute_queue_detail()
+
+ # ⏳ throttle API
+ time.sleep(0.8)
+
if i % 10 == 0:
self.env.cr.commit()
+
except Exception as e:
- _logger.error("Failed to process record %s: %s", rec.id, str(e))
+ msg = str(e)
+
+ # 🎯 khusus rate limit
+ if '429' in msg or 'SERVICE_BUSY' in msg:
+ _logger.warning(
+ "Rate limit hit. Sleep & retry later. Record ID %s", rec.id
+ )
+ self.env.cr.rollback()
+ time.sleep(5 + random.uniform(1, 3))
+ break # STOP loop, jangan maksa
+
+ _logger.error("Failed record %s: %s", rec.id, msg)
self.env.cr.rollback()
self.env.cr.commit()