본문 바로가기

배움의 즐거움/프로그래밍

(16) Graphql-ruby - 타임아웃

반응형



Timeout


TimeoutMiddleware 를 사용하여 쿼리에 타임아웃을 적용할 수 있다. 예를 들어:

class MySchema < GraphQL::Schema
  middleware(GraphQL::Schema::TimeoutMiddleware.new(max_seconds: 2))
end

 
max_seconds 이후에는 필드가 resolved 되지 않을 것이다. 대신에, errors 키에 resolved 되지 않은 필드에 대해 에러 메시지가 추가될 것이다.

이 것은 필드 실행중에 방해한다는 것이 아니다.(그렇게 하는것은 buggy 임) 만약 너가 외부로 요청을 한다면(예를 들어 HTTP 요청이나 데이터베이스 쿼리), 해당 작업에 대해 library-specific 타임아웃을 사용하도록 해라. (예를 들어 Redis timeoutNet::HTTP 의 ssl_timeoutopen_timeout,  read_timeout)


에러를 로그하기 위해서 미들웨어에 블락을 패스해보자.

class MySchema < GraphQL::Schema
 middleware(GraphQL::Schema::TimeoutMiddleware.new(max_seconds: 2) do |err, query|
   Rails.logger.info("GraphQL Timeout: #{query.query_string}")
 end)
end


* 해당 글은 번역기 돌리다가 크롬 번역기 말도 안되는 해석에 지친 본인이 나중에 참고할 의도로 대충대충 발로 해석한 것이니 참고용으로만 사용하시길 바랍니다.

* 출처: http://graphql-ruby.org/queries/timeout.html


반응형