__init__.py 2.0 KB
Newer Older
1
#!/usr/bin/python3
2
"""
3
   Initial operation and configuration of the flask project
4
"""
5 6
import sys
import threading
7 8
from flask import Flask
from flask_session import Session
9 10
from flask_apscheduler import APScheduler
from packageship import system_config
11
from packageship.application.settings import Config
12
from packageship.libs.log import setup_log
13
from packageship.libs.configutils.readconfig import ReadConfig
14 15 16 17

OPERATION = None


18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
def _timed_task(app):
    """

    """
    from .apps.lifecycle.function.download_yaml import update_pkg_info  # pylint: disable=import-outside-toplevel

    _readconfig = ReadConfig(system_config.SYS_CONFIG_PATH)

    _hour = _readconfig.get_config('TIMEDTASK', 'hour')
    if not _hour or not isinstance(_hour, int) or _hour < 0 or _hour > 23:
        _hour = 3
    _minute = _readconfig.get_config('TIMEDTASK', 'minute')
    if not _hour or not isinstance(_hour, int) or _hour < 0 or _hour > 59:
        _minute = 0
    app.apscheduler.add_job(  # pylint: disable=no-member
        func=update_pkg_info, id="update_package_data", trigger="cron", hour=_hour, minute=_minute)
    app.apscheduler.add_job(  # pylint: disable=no-member
        func=update_pkg_info,
        id="issue_catch",
        trigger="cron",
        hour=_hour,
        minute=_minute,
        args=(False,))


43
def init_app(operation):
44
    """
45
        Project initialization function
46
    """
47 48 49
    app = Flask(__name__)

    # log configuration
50
    app.logger.addHandler(setup_log(Config))
51 52 53

    # Load configuration items

54
    app.config.from_object(Config())
55

56 57 58 59 60
    # Register a scheduled task
    scheduler = APScheduler()
    scheduler.init_app(app)
    scheduler.start()

61 62 63
    # Open session function
    Session(app)

64
    global OPERATION  # pylint: disable=global-statement
65 66 67
    OPERATION = operation

    # Register Blueprint
68 69
    from packageship.application import apps  # pylint: disable=import-outside-toplevel
    for blue, api in apps.blue_point:
70 71 72
        api.init_app(app)
        app.register_blueprint(blue)

73 74
    _timed_task(app)

75
    return app