Пример #1
0
def main(config):
    logging.basicConfig(level=logging.INFO)
    if isinstance(config, str):
        config = ConfigEngine(config)

    # Schedule configured periodic tasks
    periodic_tasks_names = [
        x for x in config.get_sections() if x.startswith("PeriodicTask_")
    ]
    for p_task in periodic_tasks_names:
        if not config.get_boolean(p_task, "Enabled"):
            continue
        task_name = config.get_section_dict(p_task).get("Name")
        if task_name == "metrics":
            logger.info("Metrics enabled!")
            schedule.every().day.at("00:01").do(compute_daily_metrics,
                                                config=config)
            schedule.every().hour.at(":01").do(compute_hourly_metrics,
                                               config=config)
            live_interval = int(
                config.get_section_dict(p_task).get("LiveInterval", 10))
            schedule.every(live_interval).minutes.do(
                compute_live_metrics,
                config=config,
                live_interval=live_interval)
        else:
            raise ValueError(f"Not supported periodic task named: {task_name}")

    # Schedule daily/weekly reports for sources and areas
    sources = config.get_video_sources()
    areas = config.get_areas()
    for src in sources:
        if src['daily_report']:
            schedule.every().day.at(src['daily_report_time']).do(
                send_daily_report_notification, config=config, entity_info=src)
    for area in areas:
        if area['daily_report']:
            schedule.every().day.at(area['daily_report_time']).do(
                send_daily_report_notification,
                config=config,
                entity_info=area)
    if config.get_boolean("App", "DailyGlobalReport"):
        schedule.every().day.at(
            config.get_section_dict("App")["GlobalReportTime"]).do(
                send_daily_global_report,
                config=config,
                sources=sources,
                areas=areas)
    if config.get_boolean("App", "WeeklyGlobalReport"):
        schedule.every(7).days.at(
            config.get_section_dict("App")["GlobalReportTime"]).do(
                send_weekly_global_report,
                config=config,
                sources=sources,
                areas=areas)

    while True:
        schedule.run_pending()
        time.sleep(10)
def get_config_file_json_strings(config_sample_path, decamelize=False):
    config_sample = ConfigEngine(config_sample_path)
    sections = config_sample.get_sections()
    config_sample_json = {}

    for section in sections:
        config_sample_json[section] = config_sample.get_section_dict(section)

    if decamelize:
        """
        Do not forget that "Source_1" becomes "source__1". 
        """
        config_sample_json = humps.decamelize(config_sample_json)

    return config_sample_json
from api.models.base import Config
from api.processor_api import ProcessorAPI
import pytest
import humps
import copy

config_sample_path='/repo/api/models/data/config-sample.ini'
config = ConfigEngine(config_sample_path)
app_instance = ProcessorAPI(config)
api = app_instance.app
client = TestClient(api)


# read sample config file
config_sample = ConfigEngine(config_sample_path)
sections = config_sample.get_sections()
config_sample_json = {}

for section in sections:
    config_sample_json[section] = config_sample.get_section_dict(section)

config_sample_json = humps.decamelize(config_sample_json)

#@pytest.mark.order1
def test_set_config():
    response = client.put(
        "/config",
        json=config_sample_json,
    )
    assert response.status_code == 200
    assert response.json() == config_sample_json