Есть ли способ обойти обновленные ограничения веб-API Dynamics 365 для одновременных запросов - PullRequest
2 голосов
/ 24 апреля 2019

Веб-API Dynamics 365 выдает следующую ошибку при попытке перенести несколько пакетов записей в CRM:

Общее время выполнения входящих запросов превысило лимит 120000 миллисекунд в течение временного окна 300 секунд. Уменьшить количество одновременных запросов или сократить продолжительность запросов и попробуйте позже.

Я использую параллельный цикл for для переноса нескольких пакетов данных в CRM с помощью веб-API. Мне нужна высокая пропускная способность, так как мне нужно перенести миллионы записей за ограниченное время.

Есть ли способ обойти эту проблему? Ограничение количества потоков приводит к тому, что пропускная способность становится основным ударом. Мне нужно решение, чтобы я мог переносить сотни партий одновременно (одновременно).

Я использую Web API v9.1 с динамикой 365. Я использую параллель для цикла, и в каждой итерации выбирается кусок данных (скажем, размер пакета 500), и этот поток переносит эти 500 записей. к CRM. Я хочу, чтобы несколько потоков по 500 записей были перенесены в CRM.

Я пытался решить эту проблему, используя несколько пользователей (поскольку ограничение только для пользователя), но это решение не было принято клиентом.

Другое решение состояло в том, чтобы уменьшить количество одновременных потоков. Это привело к снижению пропускной способности.

Я не хочу ограничивать количество потоков. Есть ли решение этой проблемы?

1 Ответ

2 голосов
/ 24 апреля 2019

Ограничения API являются документированными функциями.

Ограничение поможет обеспечить уровень защиты от случайных и непредвиденных скачков в объемах запросов, которые угрожают характеристикам доступности и производительностиплатформа Dynamics 365.

На самом деле нет способа отключить их.Вы можете попробовать подать заявку в службу поддержки Microsoft, чтобы узнать, будут ли они, но похоже, что они существуют для защиты платформы для всех пользователей (не только для вашего клиента), так что не останавливайтесь.

ДокументацияСам ответ есть, хотя, вероятно, он не тот, который вам нужен.

Если вы получите эти ответы, ваше приложение должно прекратить отправку запросов API, пока объем запросов не станет ниже предела.

Несколько вещей, на которые вы можете посмотреть:

  1. Несколько пользователей;ваш клиент сказал нет, но вы не сказали почему.Если речь шла о стоимости лицензий, вы могли бы создать несколько неинтерактивных учетных записей пользователей .

, поскольку у администратора нет доступа к данным клиента и любым изфункциональные возможности взаимодействия с клиентами, для него не требуется лицензия на приложения Dynamics 365 для взаимодействия с клиентами (онлайн) (после настройки).

Использование ExecuteMultiple для повышения производительности при массовой загрузке данных .

Вы можете использовать сообщение ExecuteMultipleRequest для поддержки сценариев массовой передачи сообщений с более высокой пропускной способностью в Dynamics 365 для клиентаВовлеченность, особенно в случае приложений Dynamics 365 для клиентов, где интернет-задержка может быть самым большим ограничивающим фактором.

Существуют некоторые ограничения для этого подхода.

  • Рекурсия не допускается.
  • Максимальный размер пакета по умолчанию равен 1000.
  • Существует ограничение в 2 одновременных выполнения ExecuteMultipleRequest на организацию.

Отчасти из опыта миграции данных может потребоваться много времени для завершения, и часто лучшим решением этой проблемы является терпение.

...