2016-11-02 4 views
0

Я хотел бы установить произвольный таймер для своих запросов graphQL. Скажем, я делаю запрос, и для Apollo требуется больше 10 секунд, чтобы отправить сообщение об ошибке.Конфигурирование запросов на размещение Apollo GraphQL

Мысли?

Должен ли я сделать это с клиентом Apollo и сервером Apollo (например, дополнительные запросы на обслуживание, такие как базы данных и т. Д.)?

ответ

2

Есть три различных места, где таймауты может иметь смысл:

1. Для подключения к серверу

Чтобы иметь тайм-аут для запросов, отправляемых на сервер, вы можете создать оболочку вокруг сетевой интерфейс, который будет отклонять запросы запросов через x секунд.

2. Для разрешения запросов на сервере GraphQL

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

3. Для соединения между вашим сервером и GraphQL бэкэнде

Для реализации таймаута для запросов на внутренний интерфейс, вы можете просто сделать выборки-запросы времени бэкэндов из после определенного количества времени ,

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

+1

Спасибо за подробный ответ, Helfer. У вас есть какие-нибудь рабочие примеры, на которые я мог бы обратить внимание? Спасибо! – Detuned

Смежные вопросы