2013-04-22 3 views
8

Vorrei che Celery compilasse Redis anziché RabbitMQ predefinito.Configurare Celery per parlare con Redis tramite socket Unix

Il Celery documentation spiega:

La configurazione è semplice, basta configurare la posizione del database Redis:

BROKER_URL = 'redis://localhost:6379/0'

in cui l'URL è nel formato di:

redis://:[email protected]:port/db_number

tutti i campi dopo che il regime sono opzionali, e sarà di default a localhost sulla porta 6379, utilizzando database di 0.

Tuttavia, ho Redis istituito non ascoltare una porta, ma invece di ascoltare una presa di corrente.

Esiste uno schema URI per supportare questo?

+0

solo curioso, qual è il problema con redis non ascoltando una porta locale? –

+0

Quindi la porta è aperta su Internet ... – Oddthinking

+0

non è corretto, è possibile associare redis a 127.0.0.1 e renderlo accessibile solo a localhost oppure è possibile creare regole firewall per limitare l'accesso solo a un insieme di indirizzi ip. –

risposta

13

Le prese Redis sono disponibili da Celery 1.3. La sintassi è:

BROKER_URL = 'redis+socket:///tmp/redis.sock' 

Se si desidera utilizzare un database specifico:

BROKER_URL = 'redis+socket:///tmp/redis.sock?virtual_host=1' 

La documentazione non è up-do-date, ma è possibile controllare questi problemi per maggiori dettagli:

+0

E l'url per il backend dei risultati del sedano? –

1

Il broker di colore rosso non supporta la connessione socket, al momento le connessioni TCP sono l'unico modo supportato.

Ho trovato questo progetto, celery-redis-unixsocket su github dopo un po 'di ricerca su google. Potresti dare un'occhiata se questo funziona per te.