파이썬에서 'Session 클래스'요청을 통해 API를 친다. 내가 얻고있어 & 요청을 사용하여 POST 메서드 호출을 호출합니다. Session().Python : 객체의 메소드를 Monkeypatching
모든 통화 (GET/POST) 실패시 다른 프로세스에 알리고 싶습니다.
s = request.Session()
def post():
try:
s.post(URL,data,headers)
except:
notify_another_process()
을 그리고 대신 직접 requests.Session().post
의이 메서드를 호출 : 나는 다음과 같은 유틸리티 메소드를 작성하여이 작업을 수행 할 수 있습니다.
그러나이 코드를 requests.Session().post
으로 monkeypatch하고 requests.Session().post
메서드 호출 자체에서 다른 프로세스에 알리는 추가 기능을 원합니다. 이것을 어떻게 할 수 있습니까?
편집 1 :
requests.Session()의 포스트 방법은 다음과 같은 서명이 있습니다
:def post(self, url, data=None, json=None, **kwargs):
return self.request('POST', url, data=data, json=json, **kwargs)
을 어떻게 든 다음과 같은 내 사용자 정의 포스트를 만들려고하는 경우
def post_new(self, url, data=None, json=None, **kwargs):
try:
s.post(url,data, json,kwargs)
except:
notify_another_process()
다음과 같이 패치를 수행합니다
requests.post = post_new
self
을 사용하고 있지 않기 때문에 session.post
안에 session's object
을 사용하고 있지 않기 때문에 이것은 실제로 좋은 monkeypatching이 아닙니다.
가능한 복제 [한 원숭이는 파이썬에서 함수를 패치 않습니다 어떻게?] (http://stackoverflow.com/questions/2375403/how-does-one-monkey-patch-a-function-in- 파이썬) –
['post' 메소드 서명이 게시 한 것과 다릅니다.] (https://github.com/kennethreitz/requests/blob/master/requests/api.py#L99) –
@ ŁukaszRogalski 전 [세션 게시 방법] (https://github.com/kennethreitz/requests/blob/master/requests/sessions.py#L513)을 사용하려고합니다. –