Open akimrx opened 1 year ago
Привет. Тоже столкнулся с таким лимитом. Только не в python клиенте, а в запросах через powershell. Если тело запроса содержит не прямое обращение к очереди, а через запрос по типу:
$body = @{
query = "Queue: $queue"
}
причем в $queue
может быть несколько очередей, перечисленных через запятую. То при выдаче с пагинацией ЯТ будет отдавать задачи до тех пор пока не упрется в лимит в 10000.
Я решил это следующим образом. Можно обращаться к апи ЯТ с телом запроса по типу:
$body = @{
queue = $queue
}
в данном случае $queue
это одна очередь. Получить все задачи очереди, если их больше 10000, можно через uri из ответа ЯТ, который содержит continuation token. Пример на powershell
$contentType = "application/json; charset=UTF-8"
$url = "https://api.tracker.yandex.net/v2/issues/_search?perPage=2000"
$headers = @{
"X-Org-ID" = $TRACKER_ORG_ID
Authorization = "OAuth $trackerToken"
}
$TRACKER_QUEUES = "QUEUE1,QUEUE2"
$issues = @()
$queues = $TRACKER_QUEUES -split(",")
Write-Host "Fetching issues"
foreach ($queue in $queues) {
Write-Host "Processing queue $queue"
$body = @{
queue = $queue
} | ConvertTo-Json
$queueIssues = @()
$request = Invoke-WebRequest -Method Post -Uri $url -ContentType $contentType -Headers $headers -Body $body -UseBasicParsing
$queueIssues += $request.Content | ConvertFrom-Json
while ($request.RelationLink.next) {
$request = Invoke-WebRequest -Method Post -Uri $request.RelationLink.next -ContentType $contentType -Headers $headers -Body $body -UseBasicParsing
$queueIssues += $request.Content | ConvertFrom-Json
}
Write-Host "Total number of issues in queue $queue : $($queueIssues.count)"
$issues += $queueIssues
}
Вообще API трекера поддерживает механизм прокрутки, если задач более 10000 тысяч, в остальных случаях приходится как-то додумывать логику за API и библиотеку, как это можно поделить на чанки менее 10К. Например у нас в компании очереди содержат больше 10К задач и это проблема в ETL и прочих историях.
Вот из документации про механизм прокрутки: https://cloud.yandex.ru/docs/tracker/concepts/issues/search-issues#scroll
Issue тут скорее для того, чтобы SeekablePaginatedList или его аналог, а короче говоря — библиотека, поддерживали этот новый механизм, без необходимости добавлять своей логики, иначе теряется смысл использования библиотеки. А без нового механизма пагинация можно сказать не работает.
Привет!
К моему большому сожалению, выяснилось, что не смотря на реализованную в вашей библиотеке пагинацию, ваш API жестко лимитирует количество любых отдаваемых объектов до 10000, независимо от того пагинируются они или нет.
Таким образом, когда есть необходимость, например выгрузить все задачи, мы упираемся в тот факт, что без костылей на своей стороне и придумывания какой-либо «оригинальной» логики, которая не всегда масштабируется, не обойтись.
Просто пример, что это действительно так:
Большая просьба, пожалуйста, уберите «жесткий» лимит в 10к на общее количество «видимых» для API данных, а ограничение в 10000 (или меньше) оставим лишь на уровне одной страницы.
Вижу, что не я один такой, и уже ранее репортили ~C~10K problem: https://github.com/yandex/yandex_tracker_client/issues/5
Ticket ID:
RK574906