mirror of
https://github.com/internetarchive/warcprox.git
synced 2025-01-18 13:22:09 +01:00
35 lines
1.5 KiB
Python
35 lines
1.5 KiB
Python
|
#!/usr/bin/env python
|
||
|
import sys
|
||
|
from optparse import OptionParser
|
||
|
from doublethink import Rethinker
|
||
|
from doublethink.services import ServiceRegistry
|
||
|
|
||
|
usage = """usage: %prog [options] db
|
||
|
where 'db' is the the name of a RethinkDB database that contains a "services" table.
|
||
|
|
||
|
This script can be used to periodically purge stale entries from the "services" table.
|
||
|
|
||
|
It is designed to be used in conjunction with cron.
|
||
|
|
||
|
Example:
|
||
|
%prog -s rethink-host0,rethink-host1,rethink-host2 doublethink_database"""
|
||
|
parser = OptionParser(usage=usage)
|
||
|
parser.add_option("-s", "--rethinkdb-servers",
|
||
|
metavar="SERVERS", dest="servers",
|
||
|
help="a comma-separated list of hostnames of rethinkdb servers. Required. [default: none]")
|
||
|
parser.add_option("-g", "--grace-period",
|
||
|
metavar="SECONDS", dest="grace_period", type="int",
|
||
|
help="leave records that have been stale for up to SECONDS seconds. [default: 0]")
|
||
|
(options, args) = parser.parse_args()
|
||
|
|
||
|
if len(args) < 1:
|
||
|
sys.exit('"db" is a required argument and should be the name of a RethinkDB database that contains a "services" table. See "--help" for a list of options')
|
||
|
|
||
|
if not options.servers:
|
||
|
sys.exit('--rethinkdb-servers (-s) is a required argument. It should be a comma-separated list of rethinkdb servers. See --help for more information')
|
||
|
|
||
|
options.servers = [srv.strip() for srv in options.servers.split(",")]
|
||
|
|
||
|
rethinker = Rethinker(servers=options.servers, db=args[0])
|
||
|
registry = ServiceRegistry(rethinker)
|
||
|
registry.purge_stale_services(grace_period=options.grace_period)
|