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