2012-03-29 3 views
3

Ich polling die gleiche URL mehrmals hintereinander mit Urllib3. Ich habe die Anfragen profiliert und ich erhalte den Header:Wie zu verhindern, Python Urllib3 von Caching-Antwort

Cache-Control: no-Transformation, max-age = 120

Auf Anfragen nach dem ersten ich die Cache-Version der Seite, anstatt die immer Anfrage wird erneut ausgeführt. Ich habe keine Kontrolle über die vom Server zurückgegebenen Header. Wie kann ich das Zwischenspeichern verhindern?

Ich bin auf Debian Squeeze und diese Python 2.6.6

pool = urllib3.HTTPConnectionPool('itunes.apple.com') 
request = pool.request('GET', '/webObjects/MZStore.woa/wa/viewTop? 
         selected_tab_index=0&startIndex=0&genreId=36', 
         headers = {'Host': 'itunes.apple.com', 
         'Accept-Encoding': 'gzip, deflate', 'X-Apple-Tz': -18000, 
         'X-Apple-Store-Front': '143441-1,2') 
+0

Bitte zeigen Sie den Aufruf von urllib3 mit Parametern an. –

Antwort

3

urllib3 läuft hat keine native Caching eingebaut. Sind Sie sicher, dass es mit zwischengespeicherten Ergebnisse nicht reagiert der Server ist?

+0

Das ist sehr gut möglich. Gibt es eine Möglichkeit, zu verhindern, dass die zwischengespeicherte Antwort vom Server zurückkommt, abgesehen vom Warten? –

+0

Das hängt wirklich vom Server und der Logik ab, die es implementiert. Wie James weiter unten erwähnt, könnten Sie versuchen, einen Cache-Control-Header zu senden: no-cache. Sie könnten auch versuchen, einen Abfrageparameter wie einen Zeitstempel an die URL anzuhängen. – shazow

2

Versuchen, indem die folgenden Header:

Cache-Control: no-cache

Pragma: no-cache

Gültig bis: Do., 1. Januar 1970 00:00:00 GMT

+0

Ich kam hierher, weil ich ein Ergebnis im Cache hatte, wenn ich ein Skript ausführte, um zu überprüfen, ob mein Server lief. Das Hinzufügen dieser Header funktionierte für mich; Vielen Dank! Hinweis: Ich verwende Python-Anfragen – pa1983

Verwandte Themen