Sto lavorando a un progetto, ho una domanda riguardante l'architettura:
- Diciamo che ho molti script Python sul mio server e c'è main.py che contiene tutte le classi. E c'è una sceneggiatura chiamata %codice%
- Un utente di nome alex si registra e l'URL del suo sito è archiviato MariaDB
-
copymain.py
controlla se un utente si è iscritto ogni 5 minuti usando cron - quando
copymain.py
rileva che alex si è registrato, crea una copia dicopymain.py
rinominala inmain.py
, spostaalex.py
inalex.py
e scrive l'url del sito di alex inscriptFolder
- Cron o Celery (non ancora deciso) eseguiranno tutti i file
alex.py
all'interno di.py
ogni diciamo 15 minuti
Perché ho scelto questo design?
-
Questo design mi consentirà di eliminare molti stack e code e inserendo il mio script e rendendolo più semplice, è una soluzione semplice e funziona perfettamente. Se devo modificare
scriptFolder
, tutto ciò che devo fare è modificare i moduli importati, quindi non è necessario modificare singole copie. -
Penso che copiando i file, potrei facilmente distribuirlo su molti server. Sposta alcuni file
main.py
su questo server, altri su quello e io sono fatto. Questi sono i due motivi principali. -
Diciamo che devi generare RSS per i siti web, per qualche ragione c'è un utente chiamato fred che ha un problema, c'è un problema che richiede uno script speciale, perché sappiamo tutti che ogni sito ha il proprio design e molti si verificano errori durante la rottamazione e la gestione di html, puoi andare su
.py
e modificare lo script per quell'utente.
È l'architettura più efficiente? O dovrei usare un file, ottenere gli utenti dal database? Al momento il mio script lo fa, ma preferisco copiare per i motivi sopra indicati, una semplice pianificazione lo farebbe. Ho bisogno di assicurarmi che, indipendentemente da quanti utenti ho, il sito web di ogni utente verrà elaborato esattamente nel momento in cui ho promesso quando si sono registrati, quando ce ne sono troppi e ho notato che è lento, ho appena acquistato l'aggiornamento o acquista un altro server. Ho paura di creare troppi thread e dovermi preoccupare di come scala. Copiare sembra la soluzione più semplice, Linux usa cron sempre per intere directory.
Modifica
Per favore dimenticatevi della parte di rottamazione, diciamo che dovete fare qualche compito per ogni utente nel vostro database, come mandargli un messaggio, o qualsiasi altra cosa, è la mia soluzione come coda e threading, in termini di tempo trascorso sul processo e in termini di leggerezza sul server? C'è una soluzione migliore che non ho considerato?