Позиция потока, возвращаемая Box API, не может использоваться для отслеживания событий

Спасибо за ответ на мой вопрос: Это ошибка Box API v2 при получении событий

Это новая проблема, связанная с этим. Проблема в том, что я не могу надежно использовать next_stream_position, который я получил из предыдущих вызовов, для отслеживания событий.

Учитывая этот сценарий:

Учитывая следующие два запроса GET HTTP:

1. GET https://api.box.com/2.0/events?stream_position=1336039062458

This one returns the JSON file which contains one file entry of myfile.pdf and the next stream position = 1336039062934

2. GET https://api.box.com/2.0/events?stream_position=1336039062934

В этом вызове используется позиция потока, полученная при первом вызове. Однако он возвращает JSON, содержащий ту же запись файла myfile.pdf, что и при первом вызове.

Я думаю, что если первый вызов дает позицию в потоке, ее следует использовать как отметку для этого точного времени (скажем: TIme A). Если я использую эту позицию в потоке в последующих запросах, никакие события до «Time A» не должны возвращаться.

Это ошибка? Или я неправильно использовал API?

Большое спасибо.


person Kevin    schedule 03.05.2012    source источник


Ответы (3)


Конечная точка Box / events предназначена для предоставления вам высоконадежного списка всех событий, относящихся к вашей учетной записи Box. События регистрируются в упорядоченном по времени списке, который мы называем stream_position. Когда вы нажимаете API / events и передаете stream_position, мы отвечаем вам событиями, которые произошли незадолго до этой позиции потока, до текущей stream_position или chunk_size, в зависимости от того, что меньше. Из-за задержки во времени и наших предпочтений, чтобы вы не пропустили какое-то событие, вы можете получать повторяющиеся события при вызове API / events. Вы также можете получать события, которые выглядят так, как если бы они были "до" событий, которые вы уже получили. Наша философия заключается в том, что для вас лучше знать, что произошло, чем оставаться в неведении и упускать что-то важное.

person seanrose    schedule 03.05.2012

События бокса в настоящее время дают вам окно примерно на 5 секунд в прошлое, чтобы вы не пропустили какое-то событие.

Мы рассмотрели возможность просто отложить отправляемые вам события примерно на 5 секунд и исключить дублирование событий на нашей стороне, но на данный момент мы повернули циферблат в сторону реального времени. Сообщите нам, если вы предпочитаете полностью удаленный поток, это было медленнее.

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

person Peter    schedule 03.05.2012

Чтобы помочь вам определить, является ли событие дубликатом, мы добавили к каждому событию event_id, который будет уникальным. Мы намерены, чтобы event_id позволил вам исключить дублирование ответов, которые вы получаете от последующих вызовов GET / events.

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

person Peter    schedule 10.05.2012