Avvio di un'attività Windows da Linux, quali sono le mie opzioni? [chiuso]

2

Abbiamo un server che esegue attività di elaborazione dati, usando Python, Django e Celery, su Linux. Una volta che arriva una serie di dati, sono programmate una serie di attività di Celery e vengono eseguite, alcune di esse in parallelo, alcune dipendono dai risultati di attività precedenti, tutto funziona.

Ora dobbiamo implementare una nuova attività - un programma proprietario di Windows deve essere chiamato su alcuni dei nostri file di dati, risultando in alcuni più file. Solo una istanza di questo programma può essere eseguita allo stesso tempo (in pratica, dobbiamo riscrivere i suoi config.ini prima di poterla avviare ogni volta, e c'è solo uno di questi .ini). Deve essere eseguito su Windows, non può essere eseguito con Wine.

Condividere i file è facile, c'è un supporto di rete su cui entrambi i lati possono parlare

Ma non sono sicuro di quale sia il modo migliore per avviare l'attività dal server Linux e sapere che è terminato, che funzionerebbe bene con il modo in cui attualmente eseguiamo le altre attività.

Un'opzione potrebbe essere quella di dare alla macchina Windows un piccolo server web, lasciare che ascolti una richiesta in modo che possa avviarsi una volta che riceve qualcosa, avere il suo stesso Celery o simili, e lasciare che chiami un altro URL su Linux task server una volta terminato.

Ma sembra un po 'goffo, ho opzioni migliori?

    
posta RemcoGerlich 14.08.2015 - 13:50
fonte

2 risposte

5

L'utilizzo di un server web a questo scopo è in realtà un approccio standard , è solo una forma semplice di Architettura orientata ai servizi . Ovviamente, questo termine potrebbe far finta di più di quanto non ci sia dietro.

Per mantenerlo leggero, senza la necessità di utilizzare un server Web completo, puoi utilizzare uno strumento come node.js . È la soluzione più semplice a cui posso pensare per il tuo problema, node.js fornisce tutta la "colla" necessaria per farlo funzionare.

Ad esempio, l'impostazione di un server web con 6 (sei!) righe di codice è mostrato nella pagina di ingresso sopra. Per l'impostazione di un servizio REST con node.js, troverai molte esercitazioni sul Web. Supposto che il tuo programma Windows sia un programma a riga di comando senza GUI (altrimenti il tuo scenario non ha molto senso per me), puoi eseguirlo nel modo usuale con spawn ed exec , in modo asincrono. Inoltre, sono abbastanza sicuro che tu possa fare in modo che un server del genere interagisca con Celery con solo poche righe di codice.

    
risposta data 14.08.2015 - 15:09
fonte
0

L'approccio al servizio web raccomandato da @Doc Brown è probabilmente il migliore, ma se non vuoi seguire quella strada, ci sono diverse opzioni per l'esecuzione dei comandi da Linux a Windows: Winexe , Cygwin's OpenSSH , e alla fine Il prossimo supporto SSH di Microsoft .

    
risposta data 15.08.2015 - 16:40
fonte

Leggi altre domande sui tag