Domanda

Quale sarebbe il modo migliore per implementare un semplice meccanismo di segnalazione di arresti anomali/errori?

Dettagli:la mia app è multipiattaforma (mac/windows/linux) e scritto in Python, quindi ho solo bisogno di qualcosa che mi invii una piccola quantità di testo, ad es.solo un timestamp e un traceback (che già genero e mostro nella mia finestra di dialogo di errore).

Andrebbe bene se potesse semplicemente inviarlo via e-mail, ma non riesco a pensare a un modo per farlo senza includere un nome utente e una password per il server SMTP nell'applicazione...Devo implementare un semplice servizio Web sul lato server e fare in modo che la mia app gli invii una richiesta HTTP con le informazioni?Qualche idea migliore?

È stato utile?

Soluzione

Il servizio web è il modo migliore, ma ci sono alcuni avvertimenti:

  1. Dovresti sempre chiedere all'utente se è consentito inviare informazioni di feedback sugli errori.
  2. Dovresti essere pronto a fallire con garbo se si verificano errori di rete.Non lasciare che la mancata segnalazione di un incidente impedisca il recupero!
  3. Dovresti evitare di includere informazioni sensibili o identificative dell'utente a meno che l'utente non lo sappia (vedi n. 1) e dovresti utilizzare SSL o proteggerlo in altro modo.Alcune giurisdizioni ti impongono oneri che potresti non voler affrontare, quindi è meglio semplicemente non salvare tali informazioni.
  4. Come ogni servizio web, assicurati che il tuo servizio non sia sfruttabile da malintenzionati.

Altri suggerimenti

Non riesco a pensare a un modo per farlo senza includere un nome utente e una password per il server SMTP nell'applicazione...

Hai solo bisogno di un nome utente e una password per autenticarti su uno smarthost.Non ti serve per inviare la posta direttamente, ti serve per inviare la posta tramite un relè, ad es.il server di posta del tuo ISP.È perfettamente possibile inviare e-mail senza autenticazione: ecco perché lo spam è così difficile da fermare.

Detto questo, alcuni ISP bloccano il traffico in uscita sulla porta 25, quindi l’alternativa più solida è un HTTP POST, che difficilmente verrà bloccato da qualcosa.Assicurati di scegliere un URL dal quale non ti sentirai limitato in seguito o, meglio ancora, fai in modo che l'applicazione controlli periodicamente la presenza di aggiornamenti, quindi se decidi di cambiare dominio o qualcosa del genere, puoi inviare un aggiornamento in anticipo.

La sicurezza non è davvero un problema.Puoi scartare abbastanza facilmente i dati spazzatura, quindi tutto ciò che ti preoccupa veramente è se qualcuno si prenderebbe o meno la briga di costruire falsi traceback per infastidirti, e questa è una situazione molto improbabile.

Per quanto riguarda il carico utile, PyCrash può aiutarti in questo.

Il successo sul Web è la strada da percorrere, ma assicurati di scegliere un buon URL: la tua app sarà visibile negli anni a venire.

Sia che utilizzi SMTP o HTTP per inviare i dati, devi avere un nome utente/password nell'applicazione per impedire a chiunque di inviarti dati casuali.

Tenendo questo in mente, sospetto che sarebbe più semplice utilizzare SMTP anziché HTTP per inviare i dati.

Sarebbe sufficiente una sorta di semplice servizio web.Dovresti considerare la sicurezza in modo che non tutti possano fare richieste al tuo servizio..

Su scala più ampia abbiamo considerato un sistema di messaggistica JMS.Metti un oggetto serializzato di dati contenente il messaggio di traceback/errore in una coda e consumalo ogni x minuti generando report/avvisi da quei dati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top