mirror of https://github.com/peter4431/rq.git
Add rq.contrib.legacy.cleanup_ghosts() function, to clean up old mess.
parent
f1d3da8ba2
commit
223e09f4fe
@ -0,0 +1,24 @@
|
|||||||
|
import logging
|
||||||
|
from rq import get_current_connection
|
||||||
|
from rq import Worker
|
||||||
|
|
||||||
|
|
||||||
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
|
def cleanup_ghosts():
|
||||||
|
"""
|
||||||
|
RQ versions < 0.3.6 suffered from a race condition where workers, when
|
||||||
|
abruptly terminated, did not have a chance to clean up their worker
|
||||||
|
registration, leading to reports of ghosted workers in `rqinfo`. Since
|
||||||
|
0.3.6, new worker registrations automatically expire, and the worker will
|
||||||
|
make sure to refresh the registrations as long as it's alive.
|
||||||
|
|
||||||
|
This function will clean up any of such legacy ghosted workers.
|
||||||
|
"""
|
||||||
|
conn = get_current_connection()
|
||||||
|
for worker in Worker.all():
|
||||||
|
if conn._ttl(worker.key) == -1:
|
||||||
|
ttl = worker.default_worker_ttl
|
||||||
|
conn.expire(worker.key, ttl)
|
||||||
|
logger.info('Marked ghosted worker {0} to expire in {1} seconds.'.format(worker.name, ttl))
|
Loading…
Reference in New Issue