2008-09-17 6 views
8

¿Cuál sería la mejor manera de implementar un mecanismo simple de informe de bloqueo/error?¿Cómo implementar mejor los informes simples de fallas/errores?

Detalles: mi aplicación es multiplataforma (mac/windows/linux) y está escrita en Python, así que 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 diálogo de error).

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

Gracias!

+0

¿Se le ocurrió una implementación que estaría dispuesto a compartir, especialmente en el lado del servidor? ¡Aclamaciones! –

Respuesta

4

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

  1. siempre debe preguntar al usuario si está bien para enviar información de realimentación de error.
  2. Debe estar preparado para fallar con elegancia si hay errores de red. ¡No permita que la falla en informar un choque impida la recuperación!
  3. Debe evitar incluir información sensible o de identificación del usuario a menos que el usuario lo sepa (vea el n. ° 1) y debe usar SSL o protegerlo de alguna otra manera. Algunas jurisdicciones le imponen cargas con las que es posible que no desee tratar, por lo que es mejor no guardar dicha información.
  4. Como cualquier servicio web, asegúrese de que su servicio no sea explotable por los malhechores.
1

El éxito en la web es el camino a seguir, pero asegúrese de elegir una buena URL: su aplicación seguirá haciéndolo en los próximos años.

0

Si utiliza 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.

Teniendo esto en cuenta, sospecho que sería más fácil usar SMTP en lugar de HTTP para enviar los datos.

0

Algún tipo de servicio web simple sería suficiente. Debería considerar la seguridad para que no cualquiera pueda realizar solicitudes a su servicio.

En una escala más grande, consideramos un sistema de mensajería JMS. Coloque un objeto serializado de datos que contenga el mensaje de rastreo/error en una cola y consuma cada x minutos generando informes/alertas a partir de esos datos.

3

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 es necesario un nombre de usuario y contraseña para autenticar a sí mismo un smarthost. No es necesario que envíe un correo directamente; lo necesita para enviar correo a través de un relevo, p. servidor de correo de su ISP. Es perfectamente posible enviar correos electrónicos sin autenticación, por eso el correo no deseado es tan difícil de detener.

Habiendo dicho eso, algunos ISP bloquean el tráfico saliente en el puerto 25, por lo que la alternativa más robusta es un HTTP POST, que es poco probable que esté bloqueado por algo.Asegúrese de elegir una URL que no se sentirá restringida más adelante, o mejor aún, haga que la aplicación revise periódicamente las actualizaciones, por lo que si decide cambiar de dominio o algo, puede enviar una actualización por adelantado.

La seguridad no es realmente un problema. Puede descartar con facilidad los datos no deseados, por lo que todo lo que realmente le preocupa es si alguien se tomará la molestia de construir trazas falsas para meterse con usted, y esa es una situación muy poco probable.

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

Cuestiones relacionadas