programing

Heroku가 HTTP 응답을 잘랐습니까?

megabox 2023. 3. 25. 10:59
반응형

Heroku가 HTTP 응답을 잘랐습니까?

저는 Heroku Cedar dyno에서 Flask/Gunicorn Python 을 실행하고 있습니다.앱이 반환되다JSON responses고객님께 (그것은API server정말입니다).

가끔 클라이언트는 0바이트 응답을 받습니다.하지만 반품하는 건 제가 아닙니다.다음은 내 앱 로그의 일부입니다.

3월 14일 13:31 d.0b1adf0a-0597-4f5c-8901-8901-dfe7cda900 app[ web . 1 ][ 2013 - 03 - 14 13 : 13 : 31 UTC ]104 . 41 . v - api _ get _ balance _ ( ) : session _ balance = [ ]마스크됨]

위의 첫 번째 줄은 제가 요청을 처리하기 시작하는 것입니다.

3월 14일 13:31 d.0b1adf0a-0597-4f5c-8901-dfe7cda9bce0 app[web.1] [2013-03-14 13:31 UTC] 10.104.41.136 api_get_credits_balance()가 반환됩니다.[ 0 . credits ]

두 번째 줄은 값을 반환하는 것입니다(Flask에 대한 "Response" 객체).

3월 14일 13:31 d.0b1adf0a-0597-4f5c-8901-dfe7cda9bce0 app[web.1] 10.104.41.136 - [ 14/Mar/2013:13:31] "POST/get_credits_balance?"session_sessions=MASKED HTTP/1.1" 200 22 "-" "액셀러레이터 티타늄/3.0.0.GA(iPhone/6.1.2, iPhone OS, en_US;)

세 번째 줄은 Gnicorn의 것으로 Gunicorn이 200의 상태와 22바이트의 HTTP 본문(')을 가지고 있음을 알 수 있습니다.200 22").

그러나 클라이언트는 0바이트를 받았습니다.다음은 Heroku 라우터 로그입니다.

3월 14일 13시 30분 d.0b1adf0a-0597-4f5c-8901-dfe7cda900 heerku[ ]at=info method=POST 경로=/get_balance_balance?session_sessions=MASKED host=matchspot-apisrv.herokuapp.com fwd="66.87.120.128" dyno=web.1 큐=0 wait=0 ms connect=1 ms service=19 ms status=200 바이트=0

왜 Gunicorn은 22바이트를 반환하는데 Heroku는 0을 보고 실제로 0바이트를 클라이언트에 반환합니까?이게 헤로쿠 벌레인가요?

내가 여기서 좀 이상하다고 생각될 수도 있다는 것을 알지만 다른 선택사항이 있다.

우리는 운송 중에 가끔 버그가 발생한다는 것을 알고 있습니다.우리는 이 문제를 막기 위해 우리가 지금 당장 할 수 있는 일이 많지 않다는 것을 알고 있다.API만 제공하는 경우 읽기를 중지하고 클라이언트도 작성하면 계속 진행합니다.

에러는 기존의 케이스이며, 기존의 원인.반환값이 비어 있는 것은 뭔가 잘못되었다는 것을 의미합니다.그러나 값은 사용할 수 있으며 가져오거나 계산하거나...개발자로서 저의 본능은 빈 결과를 HTTP 오류로 처리하여 데이터 재전송을 요청하는 것입니다.그런 다음 재발송 요청을 추적하고 이러한 빈도를 확인할 수 있습니다.

(이것도 생각할 수 있는 개발자로 생각됩니다만) 요청을 카운트하여 사용자에게 "네트워크 오류"에 응답할 수 있는 적절한 값을 설정하는 것이 좋습니다.내 본능은 바로 다시 시도하고 나서 조금 더 시도하기 전에 기다리는 것이다.

설명하신 내용에 따르면 첫 번째 재시도에서는 데이터가 올바르게 수집될 수 있습니다.물론 이는 오래된 요청을 캐시에 몇 분 동안 보관하거나 가장 적절하다고 생각되는 요청에 따라 요청을 다시 실행하는 것을 의미합니다.

이는 또한 다른 포인트 투 포인트 네트워킹 오류를 우회하여 연결 문제가 발생하더라도 앱이 훨씬 더 강력해집니다.

개발자로서의 우리의 본능은 알려진 결함을 수정하는 것이지만 때로는 결함에도 불구하고 작동할 수 있는 시스템을 지향하는 것이 더 나을 수 있습니다.즉, 오류와 문제를 기록하고 수정하는 것이 나쁠 것은 없다고 합니다.

언급URL : https://stackoverflow.com/questions/15411498/heroku-truncates-http-responses

반응형