Exemplo n.º 1
0
""" Entrypoint for WSGI HTTP Server, usually gunicorn """
from gevent import monkey

monkey.patch_all()

from ihs import create_app  # noqa

# gunicorn expects the app object to appear under a variable named "application"
application = create_app()
Exemplo n.º 2
0
    celery.conf.update(app.config)
    TaskBase = celery.Task

    class ContextTask(TaskBase):  # noqa
        abstract = True
        metadata: Optional[Dict] = None

        def __call__(self, *args, **kwargs):
            with app.app_context():
                return TaskBase.__call__(self, *args, **kwargs)

    celery.Task = ContextTask
    return celery


flask_app = create_app()
celery = create_celery(flask_app)


@celery.on_after_configure.connect
def setup_periodic_tasks(sender, **kwargs):  # pylint: disable=unused-argument
    """ Schedules a periodic task for each configured endpoint task """
    if conf.CELERYBEAT_LOAD_ENDPOINTS:
        for endpoint_name, endpoint in endpoints.items():
            for task_name, task in endpoint.tasks.items():
                name = f"{endpoint_name}:{task_name}"
                if task.enabled:
                    logger.info("Registering periodic task: %s", name)
                    sender.add_periodic_task(
                        task.schedule,
                        celery_queue.tasks.sync_endpoint.s(
Exemplo n.º 3
0
            endpoints = yaml.safe_load(f)

        if key:
            endpoints = endpoints[key]

        loaded: Dict[str, Endpoint] = {}
        for ep in endpoints.items():
            try:
                new = Endpoint(name=ep[0], **ep[1])
                if new.enabled or load_disabled:
                    loaded[ep[0]] = new
            except Exception as e:
                logger.error(f"Failed to create endpoint ({ep[0]}) -> {e}")
        return loaded


if __name__ == "__main__":
    from ihs import create_app

    app = create_app()
    app.app_context().push()

    path = "tests/data/collector.yaml"
    load_disabled = False
    endpoints = Endpoint.from_yaml(path)

    list(endpoints.items())[0]
    opts = list(endpoints["well_horizontal"].tasks["sync"].options)
    opts[0]
    # from api.models import County