Solución:
Limpieza usando rq
RQ ofrece métodos para dejar cualquier cola vacía:
>>> from redis import Redis
>>> from rq import Queue
>>> qfail = Queue("failed", connection=Redis())
>>> qfail.count
8
>>> qfail.empty()
8L
>>> qfail.count
0
Puedes hacer lo mismo por test
cola, si la tiene todavía presente.
Limpieza usando rq-dashboard
Instalar rq-dashboard:
$ pip install rq-dashboard
Iniciarlo:
$ rq-dashboard
RQ Dashboard, version 0.3.4
* Running on http://0.0.0.0:9181/
Abierta en el navegador.
Seleccionar la cola
Haga clic en el botón rojo “Vaciar”
Y ya está.
Funciones de Python Purgar trabajos
Si ejecuta Redis demasiado antiguo, que falla en el comando utilizado por RQ, aún puede tener éxito con la eliminación de trabajos mediante el código Python:
El código toma el nombre de una cola, donde están los identificadores de trabajos.
Usilg LPOP pedimos identificaciones de trabajo por uno.
Añadiendo el prefijo (por defecto, “rq: trabajo:”) a la identificación del trabajo, tenemos una clave, donde se almacena el trabajo.
Usando DEL en cada clave, depuramos nuestra base de datos trabajo por trabajo.
>>> import redis
>>> r = redis.StrictRedis()
>>> qname = "rq:queue:failed"
>>> def purgeq(r, qname):
... while True:
... jid = r.lpop(qname)
... if jid is None:
... break
... r.delete("rq:job:" + jid)
... print jid
...
>>> purge(r, qname)
a0be3624-86c1-4dc4-bb2e-2043d2734b7b
3796c312-9b02-4a77-be89-249aa7325c25
ca65f2b8-044c-41b5-b5ac-cefd56699758
896f70a7-9a35-4f6b-b122-a08513022bc5
– 2016 –
Ahora puedes usar rq’s empty
línea de comando del formulario de opción:
/path/to/rq empty queue_name
Entonces puedes usarlo para vaciar cualquier cola, no solo la fallida
ninguna de las soluciones anteriores funcionó falló La cola no está registrada en las colas
así que muevo todos los trabajos fallidos a la cola predeterminada y uso
rq vacío nombre_cola –url [redis-url]