web-dev-qa-db-ja.com

Pythonリクエストでキャッシュをクリアするにはどうすればよいですか?

Pythonのrequestsパッケージはデフォルトでデータをキャッシュしますか?

例えば、

import requests
resp = requests.get('https://some website')

応答はキャッシュされますか?はいの場合、どうすればクリアできますか?

19
ethanjyx

Pythonリクエストにはキャッシュ機能はありません。

ただし、それらが必要な場合は requests-cache を参照できますが、使用したことはありません。

2018年現在、最後のリリースは2016年でしたので、維持されていないようです。

11
user2629998

'Cache-Control: no-cache'ヘッダーを追加します。

self.request = requests.get('http://google.com',
                            headers={'Cache-Control': 'no-cache'})
14
jones77

デフォルトでは、リクエストはキャッシュを行いません。 CacheControl のようなものを使用して簡単にプラグインできます。

5
Lukasa

遅い回答ですが、 pythonリクエストリクエストをキャッシュしません headersCache-ControlおよびPragma代わりに、すなわち:

import requests
headers = {
    ...
    "Cache-Control": "no-cache",
    "Pragma": "no-cache"
}
x = requests.get("site.tld", headers=headers)
...

HTTP /ヘッダー

  • Cache-Control
    Cache-Control general-headerフィールドは、要求と応答の両方でメカニズムをキャッシュするためのディレクティブを指定するために使用されます。キャッシングディレクティブは単方向です。つまり、要求内の特定のディレクティブは、同じディレクティブが応答で提供されることを意味していません。

  • Pragma
    リクエスト固有のチェーンのどこにでもさまざまな影響を与える可能性のある実装固有のヘッダー。 Cache-Controlヘッダーがまだ存在しないHTTP/1.0キャッシュとの下位互換性のために使用されます。


ディレクティブ

  • no-cache
    キャッシュされたコピーを解放する前に、キャッシュに強制的に検証のためにオリジンサーバーにリクエストを送信させます。


Pragmaに関する注意:

プラグマはHTTP応答に対して指定されていないため、一般的なHTTP/1.1のCache-Controlヘッダーの信頼できる代替にはなりませんが、Cache-Controlヘッダーフィールドが省略されている場合、Cache-Control:no-cacheと同じように動作します。リクエスト。 Pragmaは、HTTP/1.0クライアントとの下位互換性のためにのみ使用してください。

5
Pedro Lobito