Come dovrei progettare un gestore di pianificazione personale che funzioni 24/7? [chiuso]

6

Ho sviluppato un sistema di gestione > ADHD per me stesso che sta tentando di cambiare più abitudini contemporaneamente. So che questo è contrario alla saggezza convenzionale, ma ho provato il convenzionale per anni e anni; ora sto provando a modo mio. (volevo solo dirlo per cercare di impedirgli di distrarre le persone dalla domanda reale)

Ad ogni modo, mi piacerebbe scrivere qualcosa da eseguire su un server remoto che mi controlla, mi aiuta a costruire / evitare certe abitudini, ecc.

Ciò che equivale a è un sistema che:

  • viene eseguito 24/7
  • potrebbe avere più attività indipendenti da eseguire contemporaneamente
  • potrebbe avere attività che richiedono l'esecuzione di altre attività
  • consente di pianificare le attività in base a ora specifica, ricorrenza (ad esempio "esegui ogni 5 minuti") o intervallo (ad esempio "esegui dalle 14:00 alle 15:00")

Il mio primo tentativo ingenuo a questo era solo un singolo script PHP programmato per essere eseguito ogni minuto da cron (era stata scelta la lingua per usare una determinata libreria, ma non più necessaria). La logica dietro quando eseguire questa o quella parte di codice è diventata piuttosto veloce.

Quindi la mia domanda è: come devo affrontare questo da qui? Non sono legato a nessuna lingua, anche se sono parziale a python / javascript.

Pensieri:

  • Potrebbe essere un insieme di script che include un meccanismo di pianificazione con uno script per bit di logica ... ma l'idea mi sembra sbagliata.

  • Costruirlo come un demone potrebbe essere utile, ma ancora non sai cosa fare riguardo a dozzine di istruzioni if-else per rilevare l'ora corrente

posta Crawford Comeaux 27.06.2013 - 09:26
fonte

1 risposta

9

Vorrei andare in questo modo:

  1. Ogni attività è incapsulata nella sua stessa classe
    • Un'attività contiene solo un singolo metodo: Execute . Questo metodo esegue l'azione dell'attività.
    • Un'attività è non responsabile del controllo dei suoi requisiti.
  2. La pianificazione viene eseguita tramite Lavori
    • Un lavoro fa riferimento a un'attività
    • Un lavoro definisce quando è consentito eseguire la sua attività
    • Avresti una classe per tipo di lavoro, ad esempio
      • a RecurringJob ("ogni 5 minuti")
      • an IntervalJob ("dalle 14 alle 15")
    • Un lavoro è un'implementazione di Modello tester / Doer .
  3. Avresti un registro lavori . Questo è fondamentalmente lo schedulatore che esegue i lavori.
    • Controlla periodicamente (ogni 10 secondi, ogni minuto o qualunque cosa tu abbia bisogno) tutti i lavori registrati di loro possono essere eseguiti.

Il requisito "può avere attività che richiedono l'esecuzione di altre attività prima" può essere implementato utilizzando Composite pattern e passando le attività nell'ordine corretto.

Il requisito "può avere più attività indipendenti da eseguire contemporaneamente" può essere implementato rendendo l'esecuzione di un'attività asincrona.

    
risposta data 27.06.2013 - 13:47
fonte

Leggi altre domande sui tag