ฉันกำลังย้ายโหนดบางส่วนจาก API
API ยอมรับเพียง 60 คำขอต่อนาที
ดังนั้น หมายความว่าหากนำเข้า 60 รายการในหนึ่งนาที รายการอื่นๆ ทั้งหมดจะไม่ถูกนำเข้าเนื่องจาก API จะส่งคืนรหัสข้อผิดพลาด 429 ในกรณีดังกล่าว
ดังนั้นใน cron ถัดไป 60 รายการเดียวกันจะได้รับการประมวลผลและจะได้รับการอัปเดต รายการอื่น ๆ ทั้งหมดจะไม่ถูกนำเข้า
ฟังก์ชัน mymodule_cron () {
/** @var \Drupal\migrate\Plugin\MigrationInterface $migration */
$migration = $this->migrationPluginManager->createInstance($migration_id);
$migration->getIdMap()->prepareUpdate();
$executable = ใหม่ MigrateExecutable($migration, new MigrateMessage());
$executable->import();
}
ฉันควรทำอย่างไรในกรณีนี้เพื่อนำเข้าสินค้าทั้งหมด
มีฟังก์ชั่นคิวใด ๆ กับ cron ที่ดำเนินการย้ายข้อมูลหรือไม่? เพื่อให้ฉันสามารถบอกให้ดำเนินการ 60 รายการต่อคิวและดำเนินการหนึ่งคิวต่อนาที อะไรทำนองนั้น
อัปเดต:
$request = $this->httpClient->get($url, [
'ส่วนหัว' => [
'ประเภทเนื้อหา' => 'แอปพลิเคชัน/json',
'ยอมรับ' => 'แอปพลิเคชัน/json',
'การอนุญาต' => 'ผู้ถือ' $this->โทเค็น
]
]);
$news_item = json_decode($request->getBody(), จริง);
$source = $migration->getSourceConfiguration();
$source['data_rows'] = $news_item;
$migration->set('แหล่งที่มา', $แหล่งที่มา);
มีมากกว่า 300 รายการ