Configuration cli argument for document_consumer

This commit is contained in:
Ovv
2018-02-24 20:32:19 +01:00
committed by Daniel Quinn
parent de0464639b
commit d89dbbe537
4 changed files with 45 additions and 36 deletions

View File

@@ -16,9 +16,6 @@ class Command(BaseCommand):
consumption directory, and fetch any mail available.
"""
LOOP_TIME = settings.CONSUMER_LOOP_TIME
MAIL_DELTA = datetime.timedelta(minutes=10)
ORIGINAL_DOCS = os.path.join(settings.MEDIA_ROOT, "documents", "originals")
THUMB_DOCS = os.path.join(settings.MEDIA_ROOT, "documents", "thumbnails")
@@ -32,13 +29,22 @@ class Command(BaseCommand):
BaseCommand.__init__(self, *args, **kwargs)
def add_arguments(self, parser):
parser.add_argument("directory", default=settings.CONSUMPTION_DIR, nargs='?')
parser.add_argument("--loop-time", default=settings.CONSUMER_LOOP_TIME, type=int)
parser.add_argument("--mail-delta", default=10, type=int)
parser.add_argument("--oneshot", action='store_true')
def handle(self, *args, **options):
self.verbosity = options["verbosity"]
directory = options['directory']
loop_time = options['loop_time']
mail_delta = datetime.timedelta(minutes=options['mail_delta'])
try:
self.file_consumer = Consumer()
self.mail_fetcher = MailFetcher()
self.file_consumer = Consumer(consume=directory)
self.mail_fetcher = MailFetcher(consume=directory)
except (ConsumerError, MailFetcherError) as e:
raise CommandError(e)
@@ -49,27 +55,30 @@ class Command(BaseCommand):
pass
logging.getLogger(__name__).info(
"Starting document consumer at {}".format(settings.CONSUMPTION_DIR)
"Starting document consumer at {}".format(directory)
)
try:
while True:
self.loop()
time.sleep(self.LOOP_TIME)
if self.verbosity > 1:
print(".")
except KeyboardInterrupt:
print("Exiting")
if options['oneshot']:
self.loop(mail_delta=mail_delta)
else:
try:
while True:
self.loop(mail_delta=mail_delta)
time.sleep(loop_time)
if self.verbosity > 1:
print(".", int(time.time()))
except KeyboardInterrupt:
print("Exiting")
def loop(self):
# Consume whatever files we can
self.file_consumer.consume()
def loop(self, mail_delta):
# Occasionally fetch mail and store it to be consumed on the next loop
# We fetch email when we first start up so that it is not necessary to
# wait for 10 minutes after making changes to the config file.
delta = self.mail_fetcher.last_checked + self.MAIL_DELTA
delta = self.mail_fetcher.last_checked + mail_delta
if self.first_iteration or delta < datetime.datetime.now():
self.first_iteration = False
self.mail_fetcher.pull()
# Consume whatever files we can
self.file_consumer.run()