cron: add a option to target domain (#44188)
This commit is contained in:
parent
33cddd0a2c
commit
262977132a
|
@ -198,8 +198,13 @@ def test_cron_command():
|
|||
gettempdir.side_effect = lambda: pub.app_dir
|
||||
|
||||
with mock.patch('wcs.qommon.management.commands.cron.cron_worker') as cron_worker:
|
||||
call_command('cron')
|
||||
assert cron_worker.call_count == 1
|
||||
with mock.patch('wcs.qommon.publisher.QommonPublisher.get_tenants') as mock_tenants:
|
||||
mock_tenants.return_value = ['example.net', 'foo.bar', 'something.com']
|
||||
call_command('cron')
|
||||
assert cron_worker.call_count == 3
|
||||
cron_worker.reset_mock()
|
||||
call_command('cron', domain='example.net')
|
||||
assert cron_worker.call_count == 1
|
||||
|
||||
# simulate another locked cron
|
||||
from wcs.qommon.vendor import locket
|
||||
|
|
|
@ -34,6 +34,7 @@ class Command(BaseCommand):
|
|||
|
||||
def add_arguments(self, parser):
|
||||
parser.set_defaults(verbosity=0)
|
||||
parser.add_argument('-d', '--domain', '--vhost', metavar='DOMAIN')
|
||||
parser.add_argument('--force-job', dest='force_job', action='store_true',
|
||||
help='Run even if DISABLE_CRON_JOBS is set in settings')
|
||||
parser.add_argument('--job', dest='job_name', metavar='NAME')
|
||||
|
@ -44,6 +45,10 @@ class Command(BaseCommand):
|
|||
print('Command is ignored because DISABLE_CRON_JOBS is set in settings')
|
||||
return
|
||||
lockfile = os.path.join(tempfile.gettempdir(), 'wcs-cron-in-progress.lock')
|
||||
if options.get('domain'):
|
||||
domains = [options.get('domain')]
|
||||
else:
|
||||
domains = get_publisher_class().get_tenants()
|
||||
try:
|
||||
with locket.lock_file(lockfile, timeout=0):
|
||||
if verbosity > 2:
|
||||
|
@ -53,7 +58,7 @@ class Command(BaseCommand):
|
|||
publisher_class.register_cronjobs()
|
||||
publisher = publisher_class.create_publisher()
|
||||
app_dir = publisher.app_dir
|
||||
for hostname in publisher.get_tenants():
|
||||
for hostname in domains:
|
||||
if verbosity > 1:
|
||||
print('cron work on %s' % hostname)
|
||||
publisher.app_dir = os.path.join(app_dir, hostname)
|
||||
|
|
Loading…
Reference in New Issue