私はPythonでAPIの 'Session class'リクエストを使っています。私はGETを&のrequest.Session()を使ったPOSTメソッド呼び出しにしています。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
メソッド呼び出し自体に他のプロセスに通知する機能を追加したいと考えています。どうすればこれを達成できますか?
EDIT 1:
requests.Session()のpostメソッドのシグネチャは次のとおりです。
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's object
の中にsession.post
を使用しているため、これは実際には良い音読ではありません。
可能な重複[1匹のサルは、Pythonでの関数にパッチを当てるんどのように?](http://stackoverflow.com/questions/2375403/how-does-one-monkey-patch-a-function-in- Python) –
[投稿のメソッド署名があなたが投稿したものとは異なる](https://github.com/kennethreitz/requests/blob/master/requests/api.py#L99) –
@ŁukaszRogalski私は[セッション後のセッション](https://github.com/kennethreitz/requests/blob/master/requests/sessions.py#L513)を使用しようとしています。 –