Cos'è la coda di redis

Cos'è la coda di redis
Redis è un archivio di dati chiave-valore gratuito e open source. È possibile utilizzare Redis come database, una cache per altri database o un broker di messaggi.

Questa guida implementerà le code di attività in Redis usando la libreria di code Python Redis.

Cos'è la coda di redis?

Python Redis Code o RQ è una biblioteca Python semplice ma potente che funziona con Redis per eseguire le task ques e l'esecuzione in background usando i lavoratori. RQ è semplice da usare per i principianti ma è ancora molto potente per grandi progetti.

La caratteristica delle attività di accodamento è essenziale quando si lavora con funzioni e codice che tende a bloccare l'esecuzione del programma. Un esempio di tale codice sono le richieste di rete.

Discutiamo di come possiamo usare questo strumento.

Configurazione dell'ambiente

Prima di poter procedere, devi assicurarti di avere un buon ambiente. Per questo, avrai bisogno di una versione in esecuzione del server Redis, Python 3 e PIP installato.

Illustreremo l'installazione e l'impostazione su un sistema Ubuntu.

Inizia aggiornando i pacchetti e installa Redis Server utilizzando i comandi di seguito:

Sudo Apt-get Aggiornamento
sudo apt -get installa redis -y

Una volta completato, avviare il server Redis utilizzando il comando:

SUD SERVIZIO Redis-Server Start

Il prossimo passo è installare Python3 e PIP sul nostro sistema. Sentiti libero di saltare alle sezioni successive se hai installato Python.

sudo apt-get installa python3.9 Python3 -pip -y

Quindi, utilizzare PIP per installare la libreria RQ.

sudo pip3 installa rq

Il comando sopra scaricerà e installerà la libreria RQ e possiamo iniziare a usarla.

Lavorare con la coda Redis

Per illustrare utilizzando la libreria RQ, utilizzeremo una semplice richiesta HTTP. Nel nostro esempio, creeremo una semplice funzione che effettua una chiamata API a ipify.org e ottieni il nostro indirizzo IP corrente. La funzione fa una richiesta HTTP al server, il che significa che si tratta di una funzione di blocco.

Crea un semplice file Python e chiamalo IP.Py. Successivamente, inserisci il codice come:

richieste di importazione
def get_ip (URL):
risposta = richieste.Ottieni (URL).JSON ()
Risposta di ritorno
Stampa (get_ip ("https: // API.ipify.org?formato = json "))

Il codice sopra restituirà il tuo indirizzo IP corrente. Noterai che la richiesta richiede alcuni secondi per risolvere e il server per rispondere. Ciò significa che il resto del codice viene bloccato fino a quando questo blocco non viene eseguito.

Una risposta di esempio dal codice sopra è come mostrato:

'ip': '185.156.46.41 '

Per impedire alla funzione di bloccare l'esecuzione del programma, possiamo passarla a RQ, che può essere elaborato come compito asincrono.

Possiamo farlo importando la libreria RQ, creando una coda semplice e coda la nostra funzione di blocco.

Crea un semplice file python e chiamalo print_ip. Immettere il codice come mostrato:

da Redis Import Redis
Dalla coda di importazione RQ
da ip import get_ip
Q = coda (connessione = Redis ())
risultato = q.Enqueue (get_ip, "https: // API.ipify.org?formato = json ")

Salva e chiudi il file.

Dobbiamo eseguire un lavoratore nella nostra directory di lavoro per elaborare le attività di Exqueding in background.

Un lavoratore è un processo Python che funziona in background per eseguire le attività di blocco nel codice. RQ utilizza la funzionalità dei lavoratori per svolgere compiti.

Per eseguire il codice nell'esempio precedente, aprire una nuova finestra del terminale e passare alla directory di lavoro (in cui si trova il codice Python).

Quindi, eseguire il comando di seguito per avviare il lavoratore.

RQ Worker--With-Scheduler

Il comando sopra dovrebbe avviare il lavoratore come mostrato:

Se non hai bisogno di uno scheduler, è possibile rimuovere l'opzione -with -Scheduler.

Una volta che il lavoratore è in esecuzione, eseguire il codice:

python3 print_ip.Py

Ora dovresti vedere le informazioni sui compiti stampati nella finestra del lavoratore come mostrato:

Per ottenere informazioni precise sulla funzionalità non bloccante di questa funzione, puoi provare ad aggiungere un sacco di dichiarazioni di stampa dopo di essa.

Noterai che le dichiarazioni di stampa vengono stampate immediatamente dopo l'esecuzione del file nonostante le richieste richiedano un po 'di tempo per elaborare.

Conclusione

Questa guida ti guida attraverso le basi del lavoro con la coda Redis. Sebbene utilizziamo semplici esempi in questa guida, si spera che ti fornirà un punto di partenza per implementare opzioni più complesse. Considera di leggere la documentazione RQ per saperne di più.