[Python-es] Reintentar

Sergio Soto Núñez sotonez en gmail.com
Mie Ago 26 17:29:34 CEST 2015


Desconozco la finalidad de tu programa.
Entiendo que tienes la necesidad de depurar y quieres llegar a ese punto
para ver como responde tu programa. Puedes simplemente sacar a una función
la ejecución de la llamada con urlib y devolver el código de respuesta. Así
puedes reintentarlo.

Un saludo

2015-08-26 17:19 GMT+02:00 Gonzalo V <gvm2121 en gmail.com>:

> Gracias Sergio. La verdad es que no ha sido fácil aprender python sobre
> todo si casi toda la info de calidad está en inglés y las traducciones son
> de personas muy nobles que lo hacen sin interés. Algunas están traducidas
> al mexicano, con sus modismos, otros en argentino, español, en fin...
> Gracias por tu respuesta, había pensado hacerlo por ensayo e error ya que
> encuentro que es una forma segura de hacer un codigo "a prueba de balas"
> pero no sé cómo emular o simular un error 504, que son errores muy
> inesperados.
> ¿Sabes tu cómo simular un error 504 en python?
>
> Saludos,
> Gonzalo
>
> El 26 de agosto de 2015, 11:06, Sergio Soto Núñez <sotonez en gmail.com>
> escribió:
>
>> Buenas Gonzalo,
>> la verdad es que para llevar poco tiempo estás haciendo cosas muy
>> interesante.
>>
>> Si me dejas que te de un consejo, siempre que tengas una duda lo mejor es
>> abrir una consola (python o ipython) y realizar la prueba. Puedes tirar
>> linea a linea hasta emular la situación que estás estudiando.
>>
>> Otra opción mas potente es utilizar un debugger (como ipdb [1]) para
>> setear un break point. El intérprete parará en esa línea y podrás observar
>> el valor de cada variable y estudiar el comportamiento.
>>
>> Te digo esto porque preguntas como las que has hecho se resuelven
>> fácilmente tal y como han hecho algunos de los miembros, tres líneas de
>> código y ejecutandolo. Y siempre aprenderás mucho más por ti mismo que
>> preguntando.
>>
>> ¡Un saludo y ánimos en tu proyecto!
>>
>> [1] Un manual de uso de ipdb:
>> https://pythonadventures.wordpress.com/tag/ipdb/
>>
>> On Wed, Aug 26, 2015 at 12:07 PM, Alberto J. Sánchez Sanz <
>> ajsanchezsanz en gmail.com> wrote:
>>
>>> for i in range(3):
>>>   print i
>>>
>>> On 26 August 2015 at 12:00, Yamila Moreno Suárez <yamila.ms en gmail.com>
>>> wrote:
>>>
>>>> i = 0
>>>> while i < 3:
>>>>      print(i)
>>>>      i += 1
>>>>
>>>> output >>
>>>> 0
>>>> 1
>>>> 2
>>>>
>>>>
>>>>
>>>>
>>>> 2015-08-26 11:47 GMT+02:00 Gonzalo V <gvm2121 en gmail.com>:
>>>>
>>>>> Muchas Gracias Andres!
>>>>> Tenia entendido que era While true daba el resultado . ¿Cómo lee el
>>>>> intérprete while 1: Que reintente 1 sola vez?
>>>>> ¿Cuál sería el código para reintentos controlados (que reintente 3
>>>>> veces, por ejemplo )?
>>>>> Gracias!
>>>>>
>>>>> Saludos,
>>>>> Gonzalo
>>>>>
>>>>> 2015-08-26 2:13 GMT-04:00 Oriol Andrés <oriolandresmartin en gmail.com>:
>>>>>
>>>>>> hola, puedes encerrar la funcion en un bucle while.
>>>>>> while 1:
>>>>>>   response = urlopen
>>>>>>   if response.headers.code == 200:
>>>>>>      break
>>>>>> On Aug 26, 2015 2:02 a.m., "Gonzalo V" <gvm2121 en gmail.com> wrote:
>>>>>>
>>>>>>> Hola a todos.
>>>>>>> Tengo un código que hace preguntas a un servidor y algunas veces
>>>>>>> retorna un 504, el codigo lo maneja bien pero me gustaría que reintentara.
>>>>>>> ¿Alguien me puede ayudar?
>>>>>>> el codigo es:
>>>>>>> import urllib.request
>>>>>>> import urllib.error
>>>>>>> from bs4 import BeautifulSoup
>>>>>>> import re, csv
>>>>>>> from FuncionCsv import LlenarCsv
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> fhand=open('isbn.txt')
>>>>>>> #csvfile=open('ResultadoScrapping.csv', 'w', newline='')
>>>>>>> for line in fhand:
>>>>>>>     try:
>>>>>>>        req=urllib.request.urlopen('XXXXXXXX'+line)
>>>>>>>        resp=req.read()
>>>>>>>        soup=BeautifulSoup(resp,'html.parser')
>>>>>>>
>>>>>>>         origen=soup.find(string=re.compile("Origen:
>>>>>>> ")).find_next().get_text()
>>>>>>>         nombre=soup.find(name="h1",itemprop="name").get_text()
>>>>>>>
>>>>>>> precioAhora=soup.find(name="p",class_="precioAhora").get_text()
>>>>>>>         d=soup.find(name="p",class_="stock").get_text()
>>>>>>>         disp=d.split()
>>>>>>>     except AttributeError:
>>>>>>>         disp="no encontrado"
>>>>>>>         nombre=''
>>>>>>>         origen=''
>>>>>>>         precioAhora=''
>>>>>>>     except urllib.error.HTTPError as e:
>>>>>>>             if e.getcode()==504:
>>>>>>>                 disp = "sin respuesta del servidor"
>>>>>>>                 print (e.getcode(),disp)
>>>>>>>                 csvfile.close()
>>>>>>>
>>>>>>>     print(line,nombre,origen,precioAhora,disp)
>>>>>>>     line1=line.split()
>>>>>>>     LlenarCsv('Resultado.csv',line1,nombre,origen,precioAhora,disp)
>>>>>>> cierracsv()
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Saludos,
>>>>>>> Gonzalo
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Python-es mailing list
>>>>>>> Python-es en python.org
>>>>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>>>
>>>>>>>
>>>>>> _______________________________________________
>>>>>> Python-es mailing list
>>>>>> Python-es en python.org
>>>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>>
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Python-es mailing list
>>>>> Python-es en python.org
>>>>> https://mail.python.org/mailman/listinfo/python-es
>>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Yamila  Moreno Suárez
>>>> http://dendarii.es
>>>> http://moduslaborandi.net
>>>>
>>>> _______________________________________________
>>>> Python-es mailing list
>>>> Python-es en python.org
>>>> https://mail.python.org/mailman/listinfo/python-es
>>>> FAQ: http://python-es-faq.wikidot.com/
>>>>
>>>>
>>>
>>> _______________________________________________
>>> Python-es mailing list
>>> Python-es en python.org
>>> https://mail.python.org/mailman/listinfo/python-es
>>> FAQ: http://python-es-faq.wikidot.com/
>>>
>>>
>>
>> _______________________________________________
>> Python-es mailing list
>> Python-es en python.org
>> https://mail.python.org/mailman/listinfo/python-es
>> FAQ: http://python-es-faq.wikidot.com/
>>
>>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20150826/2f886d23/attachment.html>


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