[Python-es] Reintentar

Gonzalo V gvm2121 en gmail.com
Mie Ago 26 17:19:04 CEST 2015


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/
>
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20150826/3ea0d587/attachment.html>


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