Tôi đang di chuyển một số nút từ API.
API chỉ chấp nhận 60 yêu cầu mỗi phút.
Vì vậy, điều đó có nghĩa là nếu 60 mặt hàng được nhập trong một phút, tất cả các mặt hàng khác sẽ không được nhập vì API sẽ trả về mã lỗi 429 trong trường hợp đó.
Vì vậy, trong cron tiếp theo, 60 mục tương tự sẽ được xử lý và sẽ được cập nhật. Tất cả các mặt hàng khác sẽ không bao giờ được nhập khẩu.
hàm mymodule_cron() {
/** @var \Drupal\migrate\Plugin\MigrationInterface $migration */
$migration = $this->migrationPluginManager->createInstance($migration_id);
$migration->getIdMap()->prepareUpdate();
$executable = new MigrateExecutable($migration, new MigrateMessage());
$executable->import();
}
Vậy trường hợp này tôi phải làm sao để nhập được tất cả các mặt hàng?
Có bất kỳ chức năng xếp hàng nào với cron thực thi di chuyển không? Để tôi có thể yêu cầu thực hiện 60 mục trên mỗi hàng đợi và thực hiện một hàng đợi mỗi phút, đại loại như vậy?
Cập nhật:
$request = $this->httpClient->get($url, [
'tiêu đề' => [
'Kiểu nội dung' => 'ứng dụng/json',
'Chấp nhận' => 'ứng dụng/json',
'Ủy quyền' => 'Người mang' . $this->token,
],
]);
$news_item = json_decode($request->getBody(), TRUE);
$source = $migration->getSourceConfiguration();
$source['data_rows'] = $news_item;
$migration->set('source', $source);
Chúng có hơn 300 mặt hàng.