[Python-es] Cabecera html y respuesta 304

Gerardo Diez García gerardo.diez.garcia en gmail.com
Vie Dic 6 21:53:24 CET 2013


El 06/12/13 00:52, Gerardo Diez García escribió:
> Hola, estoy haciendo un script tonto para descargar las actualizaciones
> de un archivo en línea. Quiero andar comprobando si existen
> modificaciones desde que modifiqué el archivo por última vez así que
> trato de usar la cabecera If-Modified-Since. Lo curioso es que si tomo
> como referencia el valor de ayer, me da el resultado esperado con un
> código 304. Mientras que si empleo el valor tomado del archivo me da una
> respuesta 200. El trozo de código afectado es este:
> 
> #!/usr/bin/python
> # -*- coding: utf-8 -*-
> import urllib2
> import datetime
> import os
> 
> arch = "hosts"
> 
> (mode, ino, dev, nlink, uid, gid, size, atime, mtime, ctime) = os.stat(arch)
> print datetime.datetime.fromtimestamp(atime).strftime("%a, %d %b %Y
> %H:%M:%S GMT")
> GoodFormated = datetime.datetime.fromtimestamp(atime).strftime("%a, %d
> %b %Y %H:%M:%S GMT")
> 
> 
> req = urllib2.Request('http://someonewhocares.org/hosts/hosts')
> req.add_header('If-Modified-Since', GoodFormated)
> 
> print "Código %s" % urllib2.urlopen(req).code
> resp = urllib2.urlopen(req)
> LastMod = resp.info()['Last-Modified']
> print "Ultima modificación %s" % datetime.datetime.strptime(LastMod,
> "%a, %d %b %Y %H:%M:%S GMT")
> 
> AnotherDay = datetime.datetime.today() - datetime.timedelta(days=1)
> AnotherGoodFormated = AnotherDay.strftime("%a, %d %b %Y %H:%M:%S GMT")
> print AnotherGoodFormated
> 
> req = urllib2.Request('http://someonewhocares.org/hosts/hosts')
> req.add_header('If-Modified-Since', AnotherGoodFormated)
> 
> try:
>     urllib2.urlopen(req)
> except urllib2.URLError, e:
>     if e.code == 304:
>         print "Aquí está. Código %s" % e.code
> 
> ¿A alguien se le ocurre qué está pasando?
> Muchas gracias
> 

Perdón por el ruido. Hoy funciona correctamente. Parece cosa de meigas


Más información sobre la lista de distribución Python-es