Autore Topic: Lanciare processo in background  (Letto 2130 volte)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Lanciare processo in background
« il: 21 Maggio 2013, 11:57:16 »
Per il mio progetto OTVA sto' creando un modulo che permetta l'inserimento di materiale multimediale in un sistema organizzato ed indicizzato.
L'idea e' di fare come youtube, ovvero l'utente carica un filmato dal suo PC e mentre il browser effettua l'upload sui server di google (youtube e' google), l'utente puo' preoccuparsi dell'immissione dei metadati relativi al filmato (tag, nome, descrizione etc.)

Il mio dubbio e' su COME far fare l'upload dal PC dell'utente di OTVA al NAS centrale del sistema OTVA in background rispetto al processo principale.

Ancora meglio sarebbe se l'utente si occupasse solo di indicare quali video (per esempio) caricare, immettere i metadati e premere "salva" e poi fosse un processo in background che analizza la lista dei nuovi inserimenti e procede a caricare le risorse locali nella giusta PATH sul NAS di OTVA (la struttura del filesystem e' prestabilita relativamente ad un parametro "OTVA_ROOT".

Ho letto qualcosa di GB.task, ma niente di risolutivo o codice chiaro.
Qualcuno ha sperimentato? Posso magari lanciare un comand shell in background? .....

Inoltre ..... secondo voi e' indispensabile?

Con connessioni Gigabit i tempi non sono enormi, ma se e' possibile ottimizzare perche' lasciare l'utente a girarsi i pollici? :D

grazias :D
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.413
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Lanciare processo in background
« Risposta #1 il: 21 Maggio 2013, 14:18:00 »
Non so se può esserti utile la proprietà:  Application.Daemon
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: Lanciare processo in background
« Risposta #2 il: 29 Maggio 2013, 09:58:35 »
e' confermato.....
trasferire 16 giga da pc a nas  e' lento anche su rete gigabit ......

urge necessita' di lanciare tread di copia separato :D

Lanciare un'altro programmino gambas con parametri path locale e path destinazione che restituisce il progress e al termine un valore di uscita (1=successo 0=fallimento) e poi si termini?
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.413
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Lanciare processo in background
« Risposta #3 il: 29 Maggio 2013, 13:10:35 »
Lanciare un'altro programmino gambas con parametri path locale e path destinazione che restituisce il progress e al termine un valore di uscita (1=successo 0=fallimento) e poi si termini?

...e... quindi ?
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: Lanciare processo in background
« Risposta #4 il: 29 Maggio 2013, 16:00:19 »
niente cercavo suggeriementi .... possibili soluzioi ... qualcuno che avesse approcciato un problema analogo ........ vabbe' faccio io e vi faro' sapere :D
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.413
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Lanciare processo in background
« Risposta #5 il: 29 Maggio 2013, 16:33:04 »
niente cercavo suggeriementi .... possibili soluzioi ... qualcuno che avesse approcciato un problema analogo ........

Vuoi lanciare un altro programma Gambas da un programma Gambas principale ? Puoi spiegarti meglio ?  :coder:
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: Lanciare processo in background
« Risposta #6 il: 29 Maggio 2013, 19:22:41 »
si nel momento che l'utente riempie i form del mio programma di ingesting (il primario) e preme il tasto SALVA, vengono aggiornati i dati del DB e LANCIATO un programma gambas "figlio" che fa' da server di trasferimento (avete mai provato teracopy?).

Questi inizia a copiare il file locale nell'opportuna destinazione (se applicazione non e' gia' in esecuzione) oppure l'accoda ai trasferimenti in lista.

Il demone comunica lo stato del processo di copia all'applicazione primaria e aggiorna le path nel DB man mano che le copie vengono eseguite.
se corri, morirai stanco (motto degli sniper)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: Lanciare processo in background
« Risposta #7 il: 29 Maggio 2013, 23:28:34 »
si nel momento che l'utente riempie i form del mio programma di ingesting (il primario) e preme il tasto SALVA, vengono aggiornati i dati del DB e LANCIATO un programma gambas "figlio" che fa' da server di trasferimento (avete mai provato teracopy?).

Questi inizia a copiare il file locale nell'opportuna destinazione (se applicazione non e' gia' in esecuzione) oppure l'accoda ai trasferimenti in lista.

Il demone comunica lo stato del processo di copia all'applicazione primaria e aggiorna le path nel DB man mano che le copie vengono eseguite.

qualcuno ha esperienza con dbus?
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.413
  • Ne mors quidem nos iunget
    • Mostra profilo
« Ultima modifica: 30 Maggio 2013, 22:56:26 da vuott »
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline fsurfing

  • Moderatore
  • Senatore Gambero
  • *****
  • Post: 2.484
    • Mostra profilo
Re: Lanciare processo in background
« Risposta #9 il: 30 Maggio 2013, 21:58:47 »
Citazione
qualcuno ha esperienza con dbus?

Milio o fsurfing !

direi solo milio :)


cmq, per il tuo problema credo che puoi benissimo realizzare un programma gambas che si occupa del caricamento e che utilizzi come output il terminale che andrai a leggere tramite un processo, come indicato nei link di vuott

Offline milio

  • Senatore Gambero
  • ******
  • Post: 1.273
  • Chi parla poco dice tanto...
    • Mostra profilo
Re: Lanciare processo in background
« Risposta #10 il: 30 Maggio 2013, 23:00:46 »
@fsurfing&vuott

Avevo fatto qualche esperimento, non sono di certo un esperto :)

@allegfede

Ti allego due progetti, schiavo e padrone :), che utilizzano dbus per comunicare tra di loro.
devi avviarli tutti e due, non importa la sequenza...

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.413
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Lanciare processo in background
« Risposta #11 il: 31 Maggio 2013, 00:12:23 »
@fsurfing&vuott

Avevo fatto qualche esperimento, non sono di certo un esperto
Eh, ti pare niente !



Ti allego due progetti, schiavo e padrone :), che utilizzano dbus per comunicare tra di loro.
Li ho scaricati e fatti "faticare: "molto interessante !  :coder:
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: Lanciare processo in background
« Risposta #12 il: 31 Maggio 2013, 21:25:19 »
grrrraaaaazzzziiieeee

lunedi' li analizzo con calma.
sta settimana ho smantellato (letteralmente) la sala server .... mattone su mattone :D
se corri, morirai stanco (motto degli sniper)

Offline allegfede

  • Gran Maestro dei Gamberi
  • *****
  • Post: 738
    • Mostra profilo
Re: Lanciare processo in background
« Risposta #13 il: 04 Giugno 2013, 18:45:48 »
ok, dopo molta fatica (ovvero mi hanno rotto la cosiddette per miliardi di altri motivi ... lavorativi e no ...) ho dato un occhio al codice servo/padrone del buon Milio.

E' esattamente quello che mi serve :D

Se non ho capito male, un programma con l'istruzione:
  DBus.Session.Register(NomeClasse, "/PuntatoreNomeClasse")

espone sul sistema (linux) che il DBUS ha una "procedura" chiamata NomeClasse, raggiungibile al percorso dbus / PuntatoreNomeClasse

mentre:
  Object.Attach(NomeClasse, Me, "c")

segnala chi si debba occupare della gestione degli eventi.

cosi' con:
DBus["org.gambas.dbus." & nome dell'eseguibile a cui interfacciarsi & "]["/" & PuntatoreNomeClasse & "].eventi che puo' gestire

possiamo passare a lui la "patata bollente" .......

esperimenti in corso :D
se corri, morirai stanco (motto degli sniper)

Offline vuott

  • Moderatore globale
  • Senatore Gambero
  • *****
  • Post: 11.413
  • Ne mors quidem nos iunget
    • Mostra profilo
Re: Lanciare processo in background
« Risposta #14 il: 04 Giugno 2013, 19:08:33 »

Se non ho capito male, un programma con l'istruzione:
  DBus.Session.Register(NomeClasse, "/PuntatoreNomeClasse")

espone sul sistema (linux) che il DBUS ha una "procedura" chiamata NomeClasse, raggiungibile al percorso dbus / PuntatoreNomeClasse

mentre:
  Object.Attach(NomeClasse, Me, "c")

segnala chi si debba occupare della gestione degli eventi.

cosi' con:
DBus["org.gambas.dbus." & nome dell'eseguibile a cui interfacciarsi & "]["/" & PuntatoreNomeClasse & "].eventi che puo' gestire

possiamo passare a lui la "patata bollente" .......

esperimenti in corso :D

Ovviamente è tempo perso se ti/vi chiedo anche di scrivere qualcosa al riguardo nella nostra WIKI ?!   :evil:
« Chiunque, non ricorrendo lo stato di necessità, nel proprio progetto Gambas fa uso delle istruzioni Shell o Exec, è punito con la sanzione pecuniaria da euro 20,00 a euro 60,00. »