You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
stacosys/run.py

93 lines
2.4 KiB
Python

#!/usr/bin/python
# -*- coding: UTF-8 -*-
import sys
import os
import argparse
import logging
from flask import Flask
import stacosys.conf.config as config
from stacosys.core import database
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
# configure logging
def configure_logging(level):
root_logger = logging.getLogger()
root_logger.setLevel(level)
ch = logging.StreamHandler()
ch.setLevel(level)
# create formatter
formatter = logging.Formatter("[%(asctime)s] %(name)s %(levelname)s %(message)s")
# add formatter to ch
ch.setFormatter(formatter)
# add ch to logger
root_logger.addHandler(ch)
def stacosys_server(config_pathname):
conf = config.Config.load(config_pathname)
# configure logging
logger = logging.getLogger(__name__)
configure_logging(logging.INFO)
logging.getLogger("werkzeug").level = logging.WARNING
logging.getLogger("apscheduler.executors").level = logging.WARNING
# initialize database
db = database.Database()
db.setup(conf.get(config.DB_URL))
logger.info("Start Stacosys application")
# generate RSS for all sites
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),
)
# configure scheduler
scheduler.configure(
conf.get_int(config.IMAP_POLLING),
conf.get_int(config.COMMENT_POLLING),
conf.get(config.LANG),
mailer,
rss,
)
# start Flask
app.run(
host=conf.get(config.HTTP_HOST),
port=conf.get(config.HTTP_PORT),
debug=False,
use_reloader=False,
)
if __name__ == "__main__":
parser = argparse.ArgumentParser()
parser.add_argument("config", help="config path name")
args = parser.parse_args()
stacosys_server(args.config)