meccanismo di tracciamento dell'utilizzo del pacchetto python

0

Sto cercando di dare valore a un certo pacchetto e libreria costruendo alcune statistiche di utilizzo. Questo pacchetto è scritto in python e invocato / importato dagli utenti su macchine / cluster remoti

Quello che stiamo cercando di fare è impostare un certo meccanismo di tracciamento che registrerà o registrerà ogni volta che qualcuno importa il pacchetto e idealmente per quanto tempo lo ha usato.

Posso pensare ad un normale logger che registrerà al momento dell'importazione del pacchetto e registrerà quando il processo si chiude / muore / esce usando la funzione atexit.

# let's import the package here
import package
# at this stage the package automaticaly logs something like the following in a certain file
# os.getpid() | getpass.getuser() | os.uname() | importing package time.time()

# when the process or session is closed. ataxit will execute the same function that will log the following
# os.getpid() | getpass.getuser() | os.uname() | ataxit process time.time()

In questo modo questo file di registro può essere analizzato in seguito per informazioni sull'utilizzo del pacchetto.

Ora, mi chiedo se c'è un'altra soluzione più elegante o standard per fare tutto questo.

    
posta Cobry 08.06.2017 - 17:36
fonte

1 risposta

1

Se si desidera la registrazione centralizzata, è consigliabile inviare le statistiche di utilizzo a un server remoto, ad es. con l'http-logger per logstash. Potrebbe essere più facile da mantenere che cercare di trovare dozzine di file di log.

Sarei riluttante a usare qualcosa come atexit, ci sono molti scenari in cui questa funzione non funzionerà mai (strappando il cavo, spegnimento anomalo dell'interprete ecc.). Probabilmente inizierei una discussione separata che invia un ping regolare mentre il modulo viene importato. Utilizzare alcuni log aggregati al proprio server di raccolta per calcolare il tempo totale. Dovresti generare un ID univoco al momento dell'importazione, ma è facile.

Infine: il modulo di registrazione Python è ... non proprio buono. Potrebbe essere più semplice costruire una piccola funzione che invia i log al server desiderato. Trascorro diverse ore inviando un log al logstash, quindi sono abbastanza prevenuto contro il modulo di registrazione.

    
risposta data 08.06.2017 - 22:22
fonte

Leggi altre domande sui tag