Pregunta

¿Cuál sería la mejor manera de implementar un mecanismo simple de informe de fallas/errores?

Detalles:mi aplicación es multiplataforma (mac/windows/linux) y escrito en Python, entonces solo necesito algo que me envíe una pequeña cantidad de texto, p.solo una marca de tiempo y un rastreo (que ya genero y muestro en mi cuadro de diálogo de error).

Estaría bien si pudiera simplemente enviarlo por correo electrónico, pero no se me ocurre una manera de hacerlo sin incluir un nombre de usuario y contraseña para el servidor SMTP en la aplicación...¿Debo implementar un servicio web simple en el lado del servidor y hacer que mi aplicación le envíe una solicitud HTTP con la información?¿Alguna idea mejor?

¿Fue útil?

Solución

El servicio web es la mejor manera, pero existen algunas advertencias:

  1. Siempre debe preguntarle al usuario si está bien enviar información de comentarios de error.
  2. Debe estar preparado para fallar con gracia si hay errores de red.¡No permita que no informar un fallo impida la recuperación!
  3. Debe evitar incluir información confidencial o de identificación del usuario a menos que el usuario lo sepa (consulte el punto 1) y debe usar SSL o protegerlo de otra manera.Algunas jurisdicciones le imponen cargas con las que quizás no quiera lidiar, por lo que es mejor simplemente no guardar dicha información.
  4. Como cualquier servicio web, asegúrese de que los malhechores no puedan explotar su servicio.

Otros consejos

No puedo pensar en una manera de hacer esto sin incluir un nombre de usuario y contraseña para el servidor SMTP en la aplicación...

Sólo necesita un nombre de usuario y una contraseña para autenticarse en un host inteligente.No lo necesita para enviar correo directamente, lo necesita para enviar correo a través de un relé, p.el servidor de correo de su ISP.Es perfectamente posible enviar correo electrónico sin autenticación; por eso es tan difícil detener el spam.

Dicho esto, algunos ISP bloquean el tráfico saliente en el puerto 25, por lo que la alternativa más sólida es un HTTP POST, que es poco probable que sea bloqueado por nada.Asegúrese de elegir una URL por la que no se sienta restringido más adelante, o mejor aún, haga que la aplicación busque actualizaciones periódicamente, de modo que si decide cambiar de dominio o algo así, pueda enviar una actualización con anticipación.

La seguridad no es realmente un problema.Puedes descartar datos basura con bastante facilidad, por lo que lo único que realmente te preocupa es si alguien se tomaría la molestia de construir rastreos falsos para molestarte, y esa es una situación muy poco probable.

En cuanto a la carga útil, PyCrash puede ayudarte con eso.

El acceso a la web es el camino a seguir, pero asegúrese de elegir una buena URL: su aplicación seguirá apareciendo en los años venideros.

Ya sea que utilice SMTP o HTTP para enviar los datos, debe tener un nombre de usuario/contraseña en la aplicación para evitar que cualquiera le envíe datos aleatorios.

Con eso en mente, sospecho que sería más fácil usar SMTP que HTTP para enviar los datos.

Algún tipo de servicio web sencillo sería suficiente.Tendrías que considerar la seguridad para que no cualquiera pueda realizar solicitudes a tu servicio.

A mayor escala consideramos un sistema de mensajería JMS.Coloque un objeto serializado de datos que contenga el mensaje de rastreo/error en una cola y consúmalo cada x minutos generando informes/alertas a partir de esos datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top