Foros del Web » Programando para Internet » Python »

Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Estas en el tema de Puedo obtener el ERROR y número de línea en SCRIPT WEB ? en el foro de Python en Foros del Web. Hola. Este cómo puedo capturar este y otros errores al ejecutar por apache/web?: Código: #!C:\Python27/python.exe import traceback import sys print "Content-type: text/html" print print hm; ...
  #1 (permalink)  
Antiguo 27/08/2013, 10:57
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 9 meses
Puntos: 22
Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Hola.

Este cómo puedo capturar este y otros errores al ejecutar por apache/web?:
Código:
#!C:\Python27/python.exe
import traceback
import sys
print "Content-type: text/html"
print
print hm;
print 1;
Es claro que el error está en la línea 7, pero cómo puedo sacarlo por pantalla?.

Si comento la línea 7 dejandola como:

#print hm;

entonces sí me imprime el 1.

Gracias
  #2 (permalink)  
Antiguo 27/08/2013, 11:07
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 9 meses
Puntos: 22
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Cuando corro este código desde por http, APACHE devuelve error 500.
Código:
#!C:\Python27/python.exe
import traceback
import sys
print "Content-type: text/html"
print
#print hm;

print 1;
while True print 'Hello world'
No es posible obtener los errores por vía WEB?
  #3 (permalink)  
Antiguo 27/08/2013, 13:43
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Pues por que hm no está definido. no sé que quieres hacer con eso. Si es desarrollo web, lo mejor es usar un framework.

Y necesitas leer un manual de python, además de lo de las variables definidas, en python no se utilizan los punto y coma al final de la linea (son opcionales).

Saludos
__________________
Grupo Telegram Docker en Español
  #4 (permalink)  
Antiguo 27/08/2013, 16:18
 
Fecha de Ingreso: enero-2012
Ubicación: Buenos Aires
Mensajes: 745
Antigüedad: 12 años, 10 meses
Puntos: 35
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Si lo que quieres es capturar el error que arroja print hm puedes usar:

Código Python:
Ver original
  1. try:
  2.     print hm
  3. except Exception as e:
  4.     print "Error:", e

Suponiendo que no sabes qué error va a tirar. Como esa expresión solo puede arrojar NameError, sería más adecuado hacer:

Código Python:
Ver original
  1. try:
  2.     print hm
  3. except NameError as e:
  4.     print "NameError:", e

O ya que importaste el módulo traceback podes usar:

Código Python:
Ver original
  1. try:
  2.     print hm
  3. except NameError:
  4.     print traceback.format_exc()

Para imprimir el error completo.

  #5 (permalink)  
Antiguo 27/08/2013, 16:35
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

@carbon, creo que se refería a ver los errores en Apache (lo cual se puede hacer revisando los logs).

Saludos
__________________
Grupo Telegram Docker en Español
  #6 (permalink)  
Antiguo 27/08/2013, 17:47
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 9 meses
Puntos: 22
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Muchas gracias!!!.
Cita:
Iniciado por Carlangueitor Ver Mensaje
Pues por que hm no está definido
Claro que sí, eso es lo que quiero, que PYTHON envíe el MSJ:

"Ey!, ERROR!!!, no haz declarado la VAR"

o en otros casos, "no puedo multiplicar LETRAS con ENTEROS"...

Esos errores no pueden desplegarse por la página?
  #7 (permalink)  
Antiguo 27/08/2013, 17:54
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

¿Pero en que página? No sé, realmente lo que quieres hacer, pero en todo caso, si está bien lo que dice @carbon.

Aunque no veo en que caso eso puede ser útil.

Saludos
__________________
Grupo Telegram Docker en Español
  #8 (permalink)  
Antiguo 27/08/2013, 18:15
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 9 meses
Puntos: 22
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Cita:
Iniciado por Carlangueitor Ver Mensaje
no veo en que caso eso puede ser útil.
En un proyecto de 80 mil líneas...

Te falla un archivo entre 900 archivos de tus "INCLUDES"...

y lo único que ves en la página WEB es "ERROR 500"...

por eso pregunto: ¿hay manera de que PYTHON indique la línea, el archivo y el error?
  #9 (permalink)  
Antiguo 27/08/2013, 20:55
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Python != PHP

Esto no es PHP, desarrollo web (a menos que quieras desarrollar tu propio framework) NO lo hacemos de esa manera. Regularmente usamos algún framework de desarrollo ágil como django.

Yo se cuesta mas trabajo, aprender a usar un framework y todo lo que eso implica, pero a la larga es mucho mas rápido desarrollar de esta manera. Inclusive el conocimiento que obtengas aprendiendo a usar el framework lo puedes aplicar en aprender otros frameworks o aplicar lo aprendido a otros proyectos.

Es mas, ni siquiera usamos cgi en plano ya que existe un estándar llamado wsgi para desarrollar interfaces al servidor web.

Por ultimo si decides ignorar estos consejos y seguir de la manera que estas desarrollando, te recomiendo ver como hacer tus paginas de error 500 custom y ver que puedes hacer. Otra solución seria hacer una especia de función por donde entren todas las peticiones y rodearlo con un try...catch e imprimir el stacktrace.

PD: Para empezar a desarrollar con django ni siquiera tienes que usar o configurar un servidor web completo como apache.
  #10 (permalink)  
Antiguo 27/08/2013, 23:14
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 9 meses
Puntos: 22
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Gracias.
Cita:
Iniciado por razpeitia Ver Mensaje
existe un estándar llamado wsgi para desarrollar interfaces al servidor web.
¿lo hay para windows 7?
¿de donde lo descargo? (el de GOOGLE nunca me funciona)Por ejemplo puedes decirme por que esto falla:
Código:
#!C:\Python27/python
print "Content-type: text/html"
print ""

prestamo=500000
pago=499
interes=0.04
total_pagado=0
meses=0

while prestamo>0:
	prestamo=prestamo*(1+interes/12)-pago
	meses+=1
	total_pagado=total_pagado+pago
	#print meses;print ' '
	if meses==24:
		intereses=0.09
		pago=3.999

print '<h1>'
print total_pagado
print '</h1>'
print meses
PyThon se queda colgado...
que hay de malo?

( lo corro desde localhost/culebrita/file.py )
  #11 (permalink)  
Antiguo 28/08/2013, 09:36
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Es porque préstamo nunca llega a ser menor o igual a 0. Puedes graficar esos valores con los meses y vas a ver que casi siempre va incrementando.

Si quieres aprender django entonces esta su pagina oficial:
https://www.djangoproject.com/

O si prefieres algo en español, esta la guía de maestros del web:
http://www.maestrosdelweb.com/editor...-introduccion/
  #12 (permalink)  
Antiguo 28/08/2013, 15:31
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 9 meses
Puntos: 22
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Cita:
Iniciado por razpeitia Ver Mensaje
Es porque préstamo nunca llega a ser menor o igual a 0.
Te agradezco mucho que me hallas informado.

Eso no puede informarmelo PYTHON ?
  #13 (permalink)  
Antiguo 28/08/2013, 15:42
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

En este caso no, por que no es un error de syntaxis, el código simplemente no se deja de ejecutar. Y eso es lo mismo en todos los lenguajes.


Tu problema es como estás corriendo eso en la web, ya te dijimos que esto no es PHP. si no quieres usar un framework grande como django puedes hacer con uno más sencillo, por ejemplo bottle, un ejemplo quedaría así:

Código Python:
Ver original
  1. from bottle import route, run
  2.  
  3. @route('/hello')
  4. def hello():
  5.     assert False
  6.     return "Hello World!"
  7.  
  8. run(host='localhost', port=8080, debug=True)

Corriendo el script y entrando a http://localhost:8080/ ya tendrías funcionando eso. Para desarrollar no necesitas usar apache, y cuando lo uses en producción si tendrás que usar wsgi.


Saludos
__________________
Grupo Telegram Docker en Español
  #14 (permalink)  
Antiguo 28/08/2013, 15:58
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 9 meses
Puntos: 22
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Cita:
Iniciado por Carlangueitor Ver Mensaje
En este caso no, por que no es un error de syntaxis
De forma adrede he colocado errores de sintáxis, y no me los reporta, solo aparece

ERROR 500

Gracias nuevamente
  #15 (permalink)  
Antiguo 28/08/2013, 16:01
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

¿Probaste la opción que te dí con bottle (el assert False debería generarte un error)?
__________________
Grupo Telegram Docker en Español
  #16 (permalink)  
Antiguo 28/08/2013, 17:26
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Puedes usar cgitb asumiendo que usas cgi.

Solo pon:
Código Python:
Ver original
  1. import cgitb
  2. cgitb.enable()
Al principio de tu script.

He insisto esto no es PHP y tampoco estamos en los 90's como para hacer web con cgi, te recomiendo usar un web framework, inclusive si no estas en python. Lenguajes como PHP, ruby, java también ofrecen buenos frameworks.
  #17 (permalink)  
Antiguo 29/08/2013, 12:57
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 9 meses
Puntos: 22
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Cita:
Iniciado por razpeitia Ver Mensaje
Solo pon:
Código Python:
Ver original
  1. import cgitb
  2. cgitb.enable()
Al principio de tu script.
Lo he colocado al principio de este script:
Código:
#!C:\Python27/python
pum = 3;
print
print (9*5)/pum
qq=range(3,5);
#print qq[2];
print qq[1];
razpeitia razpeitia;
y siempre me retorna 500 Internal Server Error

Solo al remover la línea 8 me retorna la salida correcta:
Código:
15
4
  #18 (permalink)  
Antiguo 29/08/2013, 13:06
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

A ver, ¿Cómo demonios estás corriendo el código en Apache?
__________________
Grupo Telegram Docker en Español
  #19 (permalink)  
Antiguo 29/08/2013, 13:07
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 9 meses
Puntos: 22
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Cita:
Iniciado por Carlangueitor Ver Mensaje
A ver, ¿Cómo demonios estás corriendo el código en Apache?
Solo sé que si remuevo la línea 8, ahí sí me retorna 15
4


Creo que Apache está como CGI
  #20 (permalink)  
Antiguo 29/08/2013, 13:12
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 8 meses
Puntos: 1329
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Cita:
Iniciado por Anarko Ver Mensaje
Creo que Apache está como CGI
Más detalles sobre eso.
__________________
Grupo Telegram Docker en Español
  #21 (permalink)  
Antiguo 29/08/2013, 13:21
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 9 meses
Puntos: 22
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Gracias por tu ayuda.
Cita:
Iniciado por Carlangueitor Ver Mensaje
Más detalles sobre eso.
Código:
httpd.conf
<IfModule dir_module>
    DirectoryIndex index.html index.htm home.php home.htm home.html index.php index.py
</IfModule>
AddHandler cgi-script .py
Eso es lo único que he adicionado al archivo httpd.conf
  #22 (permalink)  
Antiguo 12/09/2013, 10:57
 
Fecha de Ingreso: febrero-2004
Mensajes: 1.987
Antigüedad: 20 años, 9 meses
Puntos: 22
Respuesta: Puedo obtener el ERROR y número de línea en SCRIPT WEB ?

Hola.
Desconozco el motivo, pero
Código Python:
Ver original
  1. import cgitb;cgitb.enable()
no me funciona...


Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:28.