Guarda la cartella che elabora solo un oggetto alla volta?

1

Devo impostare una cartella di controllo che esegua uno script su ciascun elemento aggiunto. Ma lo script potrebbe richiedere 10 minuti o più per elaborare un singolo elemento.

Quello che ho fatto è mettere questo codice nella parte superiore del mio script che continua a guardare la cartella e poi agisce quando qualcosa viene aggiunto:

set watchFolderAlias to (POSIX file watchFolder as alias)
set r to {}
repeat
    tell application "Finder" to set r to ¬
        (sort (get files of watchFolderAlias whose kind is "alias") ¬
            by creation date)
    if (count of r) ≠ 0 then
        do(first item of r as alias)
    end if
    delay 5
end repeat

on do(x)
   (* do 10 minutes of stuff with x *)
end do

... e poi continuo a farlo funzionare. Ma questo è ingombrante e imbarazzante.

Ma se allego la roba do() come azione di una cartella, verrà lanciata una nuova istanza non appena viene aggiunto un elemento ... giusto?

Mi manca una soluzione più elegante?

(Per chiarire: se si collega uno script di azione di una cartella a una cartella, tale script viene avviato più volte, una volta ogni volta che si aggiungono elementi alla cartella, indipendentemente se un'altra istanza di detto script è già in esecuzione, questo è quello che sto cercando di evitare, ad esempio, se 10 articoli vengono lasciati nella cartella di controllo, e quindi, mentre i primi 10 elementi sono ancora in fase di elaborazione, altri 5 gli oggetti vengono rilasciati, questo lancerà una seconda istanza dello script.)

L'unica altra cosa che riesco a fare è mantenere un file di "stato" che sarà impostato su "occupato" dallo script, e "inattivo" al termine dell'elaborazione, in modo che le altre istanze dello script attenderanno per lo stato "inattivo" ... ma anche questo è scomodo.

    
posta Ze'ev 04.09.2018 - 15:34
fonte

1 risposta

1

Prova Hazel dal link

Non ho avuto processi che durino così a lungo, ma nella mia esperienza Hazel sembra sempre operare in sequenza sui file, e non avvierà un nuovo processo fino a quando non verrà eseguito il vecchio.

È un'app inestimabile per Mac, IMO. Lo uso esclusivamente al posto di Azioni cartella. È un'app a pagamento, ma è disponibile una demo gratuita e completa. Lo sviluppatore è anche molto utile e l'app è ben mantenuta. Altamente raccomandato.

Penso che la tua unica altra alternativa sia un file di blocco, che è imbarazzante, come hai detto.

    
risposta data 05.09.2018 - 14:24
fonte

Leggi altre domande sui tag