[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