2019-02-14 20:00:05 +00:00
|
|
|
import logging
|
2019-02-14 14:27:04 +00:00
|
|
|
from multiprocessing import Process
|
|
|
|
|
2019-09-19 08:52:36 +01:00
|
|
|
import click
|
2019-02-17 17:14:17 +00:00
|
|
|
import sentry_sdk
|
2019-08-30 22:20:32 +01:00
|
|
|
from apscheduler.util import get_callable_name
|
2019-02-14 14:27:04 +00:00
|
|
|
|
2019-09-19 09:10:52 +01:00
|
|
|
from actioner.cli import CLI_ENTRYPOINTS
|
2019-08-30 19:33:32 +01:00
|
|
|
from actioner.scheduler import create_scheduler
|
2019-02-17 17:14:17 +00:00
|
|
|
from actioner.settings import LOGGING_LEVEL, SENTRY_DSN
|
2019-08-30 21:42:58 +01:00
|
|
|
from actioner.web import get_server, run_server
|
2019-02-14 20:00:05 +00:00
|
|
|
|
2019-08-30 22:20:32 +01:00
|
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
|
|
|
2019-09-19 08:52:36 +01:00
|
|
|
@click.group()
|
|
|
|
def cli():
|
2019-02-14 20:00:05 +00:00
|
|
|
logging.basicConfig(level=LOGGING_LEVEL)
|
2019-09-03 08:48:57 +01:00
|
|
|
sentry_sdk.init(dsn=SENTRY_DSN)
|
2019-02-17 17:14:17 +00:00
|
|
|
|
2019-08-30 22:20:32 +01:00
|
|
|
|
2019-09-19 08:52:36 +01:00
|
|
|
@cli.command()
|
2019-09-19 08:59:39 +01:00
|
|
|
def start():
|
|
|
|
Process(target=run_server, args=(get_server(),)).start()
|
|
|
|
Process(target=create_scheduler().start).start()
|
|
|
|
|
|
|
|
|
|
|
|
@cli.command()
|
|
|
|
def once():
|
|
|
|
scheduler = create_scheduler()
|
|
|
|
jobs = {job.func for job in scheduler.get_jobs()}
|
|
|
|
for job in jobs:
|
|
|
|
logger.info("Executing '{}'".format(get_callable_name(job)))
|
|
|
|
job()
|
2019-02-14 13:45:46 +00:00
|
|
|
|
|
|
|
|
2019-09-19 09:10:52 +01:00
|
|
|
for entry_point in CLI_ENTRYPOINTS:
|
|
|
|
cli.command()(entry_point)
|
|
|
|
|
|
|
|
|
2019-02-22 22:36:17 +00:00
|
|
|
if __name__ == "__main__":
|
2019-09-19 08:52:36 +01:00
|
|
|
cli()
|