Files
stacosys/run.py
T

93 lines
2.4 KiB
Python
Raw Normal View History

#!/usr/bin/python
# -*- coding: UTF-8 -*-
2021-01-03 18:24:16 +01:00
import sys
import os
2018-10-27 18:10:28 +02:00
import argparse
import logging
2018-09-15 13:38:03 +02:00
from flask import Flask
2021-01-02 12:36:42 +01:00
import stacosys.conf.config as config
from stacosys.core import database
2021-01-03 18:24:16 +01:00
from stacosys.core.rss import Rss
from stacosys.core.mailer import Mailer
from stacosys.interface import app
from stacosys.interface import api
from stacosys.interface import form
from stacosys.interface import scheduler
2018-09-15 13:38:03 +02:00
# configure logging
def configure_logging(level):
root_logger = logging.getLogger()
root_logger.setLevel(level)
ch = logging.StreamHandler()
ch.setLevel(level)
# create formatter
2021-01-02 12:36:42 +01:00
formatter = logging.Formatter("[%(asctime)s] %(name)s %(levelname)s %(message)s")
2018-09-15 13:38:03 +02:00
# add formatter to ch
ch.setFormatter(formatter)
# add ch to logger
root_logger.addHandler(ch)
2018-01-20 10:03:41 +01:00
2018-09-15 13:38:03 +02:00
def stacosys_server(config_pathname):
2021-01-02 12:36:42 +01:00
conf = config.Config.load(config_pathname)
2018-09-15 13:38:03 +02:00
# configure logging
logger = logging.getLogger(__name__)
configure_logging(logging.INFO)
2021-01-02 12:36:42 +01:00
logging.getLogger("werkzeug").level = logging.WARNING
logging.getLogger("apscheduler.executors").level = logging.WARNING
2018-09-15 13:38:03 +02:00
# initialize database
2021-01-02 12:36:42 +01:00
db = database.Database()
db.setup(conf.get(config.DB_URL))
2018-09-15 13:38:03 +02:00
2021-01-02 12:36:42 +01:00
logger.info("Start Stacosys application")
2018-09-15 13:38:03 +02:00
2018-09-15 15:02:06 +02:00
# generate RSS for all sites
2021-01-03 18:24:16 +01:00
rss = Rss(
conf.get(config.LANG), conf.get(config.RSS_FILE), conf.get(config.RSS_PROTO)
)
rss.generate_all()
# configure mailer
mailer = Mailer(
conf.get(config.IMAP_HOST),
conf.get_int(config.IMAP_PORT),
conf.get_bool(config.IMAP_SSL),
conf.get(config.IMAP_LOGIN),
conf.get(config.IMAP_PASSWORD),
conf.get(config.SMTP_HOST),
conf.get_int(config.SMTP_PORT),
conf.get_bool(config.SMTP_STARTTLS),
conf.get(config.SMTP_LOGIN),
conf.get(config.SMTP_PASSWORD),
)
2018-09-15 15:02:06 +02:00
2021-01-03 18:24:16 +01:00
# configure scheduler
scheduler.configure(
conf.get_int(config.IMAP_POLLING),
conf.get_int(config.COMMENT_POLLING),
conf.get(config.LANG),
mailer,
rss,
)
2018-09-15 15:02:06 +02:00
2021-01-03 18:24:16 +01:00
# start Flask
2018-09-15 13:38:03 +02:00
app.run(
2021-01-02 12:36:42 +01:00
host=conf.get(config.HTTP_HOST),
port=conf.get(config.HTTP_PORT),
2018-09-15 13:38:03 +02:00
debug=False,
use_reloader=False,
)
2021-01-02 12:36:42 +01:00
if __name__ == "__main__":
2018-10-27 18:10:28 +02:00
parser = argparse.ArgumentParser()
2021-01-02 12:36:42 +01:00
parser.add_argument("config", help="config path name")
2018-10-27 18:10:28 +02:00
args = parser.parse_args()
stacosys_server(args.config)