홈>
파이썬에서 grpc-gateway 뒤에 grpc 서비스를 작성 중이며 일부 사용자의 요청이 너무 많은 경우 429 응답을 발생시키고 응답 메시지 본문에 보안 문자 토큰을 제공하려고합니다.
실제로 내 문제는 아래 코드 블록을 사용하여 상태 코드 429를 올리면 응답 메시지를 보낼 수 없다는 것입니다.
context.set_code(grpc.StatusCode.RESOURCE_EXHAUSTED)
context.set_details('Too many requests')
return MyServiceResponse()
단일 grpc로는 불가능하다는 것을 알았지 만 타사에서는 가능하다고 생각합니다.
이것에 대한 해결책이 있습니까?
- 답변 # 1
관련 자료
- bots - 불일치 - python 앱에서 discord 채널로만 메시지 보내기 (단방향 통신)
- reactjs - 오류 - 응답 실패 : 수신 된 상태 코드 400
- python + "암호화가 설치되지 않았습니다 암호를 사용할 수 없습니다"메시지 제거 방법
- aws lambda - DynamoDB Scan () API (Python)의 응답 형식을 지정하는 방법
- mysql - Ajax 성공 응답이 PHP 코드에서 에코 메시지를 표시하지 않음
- javascript - NodeJS ExpressJS 응답 HTTP 상태 코드 200 + 페이로드 보내기
- 파이썬에서 전체 json으로 API 응답의 일부를 변환하는 방법
- error handling - Azure Python 함수에서 Azure TableService 응답에 연결하는 방법은 무엇입니까?
- arrays - Python으로 HTTP 응답에서 데이터를 추출하는 방법은 무엇입니까?
- azure cosmosdb - 문서 삽입시 응답 상태 코드가 성공을 나타내지 않습니다
- split - 파이썬의 API 응답에서 특정 문자열을 추출하는 방법은 무엇입니까?
- c# - AspNet Core ActionFilter는 메시지와 함께 Http 상태 코드를 반환합니다
트렌드
- OpenCv의 폴더에서 여러 이미지 읽기 (python)
- 파이썬 셀레늄 모든 "href"속성 가져 오기
- html - 자바 스크립트 - 클릭 후 변경 버튼 텍스트 변경
- git commit - 자식 - 로컬 커밋 된 파일에 대한 변경을 취소하는 방법
- JSP에 대한 클래스를 컴파일 할 수 없습니다
- javascript - 현재 URL에서 특정 div 만 새로 고침/새로 고침
- jquery - JavaScript로 현재 세션 값을 얻으시겠습니까?
- javascript - swiperjs에서 정지, 재생 버튼 추가
- python - 문자열에서 특정 문자 제거
- JavaScript 변수를 HTML div에 '출력'하는 방법
비 확인 상태로 응답을 보내는 것은 단항 단항 RPC (양쪽에서 비 스트리밍)에 허용되지 않습니다. 스트리밍 RPC의 경우 서버는 오류 코드를 보내기 전에 응답을 보낼 수 있지만 권장되지는 않습니다. 정상 응답과 오류 상태를 혼합하면 향후 유지 보수성 문제가 발생할 수 있습니다 (예 : 동일한 오류가 여러 RPC에 적용되는 경우 모든 응답 ProtoBuf 메시지에 해당 필드가 포함되어야합니까?
질문으로 돌아가서 "자본 토큰"은 오류 상태의 일부로 간주되므로 후행 메타 데이터 중 하나로 추가 할 수 있습니다. 귀하의 경우
-bin
를 추가하여 직렬화 된 프로토 메시지를 이진 후행 메타 데이터로 추가 할 수 있습니다 후행 메타 데이터 키의 접미사또한 공식 지원 패키지
grpcio-status
가 있습니다 그게 당신을 위해이 일을합니다.서버 측은 풍부한 오류 상태를 "grpc_status.status_pb2.Status"프로토 메시지에 압축합니다. 아래 예제는 일반적인 오류 프로토만을 사용하지만 "any"프로토를
details
로 압축 할 수 있습니다 고객이 이해하는 한클라이언트 측에서 오류를 해독하고 이에 대해 반응합니다.
풍부한 상태에 대해 자세히 알아보십시오 : https://github.com/grpc/proposal/blob/master/L44-python-rich-status.md