Nel progetto sto lavorando proprio ora, abbiamo alcuni python e qualche codice C #. Ad un certo punto, chiamo da Python un sottoprocesso che avvia un eseguibile C #. Questo codice C # restituisce un codice di errore, che deve essere compreso sul lato python e deve essere creato un report leggibile.
Questo significa che entrambe le parti "devono parlare la stessa lingua". Quindi, alla fine devo gestire una mappatura {codici di errore: spiegazione leggibile} (normalmente la implementiamo come proprietà statiche di una classe di enumerazione). Questo è ovviamente un caso di duplicazione del codice e incline a essere incoerente.
Le mie idee per mitigare questo sono state finora:
-
Genera automaticamente il codice: diciamo quando il mapping sulla parte C # cambia, il codice verrà analizzato e generato automaticamente sul lato python. Anche se penso che questo sia tecnicamente corretto, devo in qualche modo analizzare il codice C # e tradurlo in codice python valido, che è probabilmente qualcosa di difficile da ottenere correttamente la prima volta.
-
Elaborazione parziale del codice di errore sul lato python. Questo significa, basta controllare zero o non zero valore di ritorno, e se diverso da zero, leggere lo stdout del processo C # e segnalarlo, non importa quale. Sebbene sia molto facile da implementare, vedo alcuni possibili avvertimenti, come il processo C # che si interrompe in modo imprevisto e segnala alcuni traceback di eccezione o simili.
Poiché questo deve essere un problema abbastanza comune, vorrei sapere quali sono gli approcci più semplici e più manutenibili utilizzati nel settore.