44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
import logging
|
|
import time
|
|
|
|
from django.core.management.base import BaseCommand
|
|
|
|
from ...services.timelapse_worker import run_one_job
|
|
|
|
logger = logging.getLogger('camlaps')
|
|
|
|
|
|
class Command(BaseCommand):
|
|
help = 'Запуск обработчика очереди таймлапсов.'
|
|
|
|
def add_arguments(self, parser):
|
|
parser.add_argument('--once', action='store_true', help='Обработать только одну задачу и выйти.')
|
|
parser.add_argument(
|
|
'--sleep',
|
|
type=int,
|
|
default=5,
|
|
help='Пауза между итерациями в loop-режиме (секунды).',
|
|
)
|
|
|
|
def handle(self, *args, **options):
|
|
logger.info('worker_cmd:handle:start')
|
|
once = options['once']
|
|
sleep_seconds = options['sleep']
|
|
|
|
if once:
|
|
try:
|
|
run_one_job()
|
|
logger.info('worker_cmd:handle:done mode=once')
|
|
except Exception:
|
|
logger.exception('worker_cmd:handle:error mode=once')
|
|
raise
|
|
return
|
|
|
|
while True:
|
|
try:
|
|
processed = run_one_job()
|
|
if not processed:
|
|
time.sleep(sleep_seconds)
|
|
except Exception:
|
|
logger.exception('worker_cmd:handle:error mode=loop')
|
|
raise |