tokenizers / app /__init__.py
bartar's picture
Upload 26 files
d66ab65 verified
Raw
History Blame Contribute Delete
1.75 kB
import os
import logging
from logging.handlers import RotatingFileHandler
from flask import Flask
from config import Config
def create_app(config_class=Config):
"""Create and configure Flask application."""
app = Flask(__name__)
app.config.from_object(config_class)
# Ensure upload folder exists
if not os.path.exists(app.config['UPLOAD_FOLDER']):
os.makedirs(app.config['UPLOAD_FOLDER'])
# Ensure HuggingFace cache directory exists
if not os.path.exists(app.config['HF_HOME']):
os.makedirs(app.config['HF_HOME'])
# Set HuggingFace environment variables
os.environ['HF_HOME'] = app.config['HF_HOME']
if 'HF_CACHE_DIR' in app.config:
os.environ['HF_CACHE_DIR'] = app.config['HF_CACHE_DIR']
# Register Blueprints
from app.routes import main_bp
app.register_blueprint(main_bp)
# Setup logging
if not app.debug and not app.testing:
if not os.path.exists('logs'):
os.mkdir('logs')
file_handler = RotatingFileHandler(
f'logs/{app.config.get("LOG_FILE", "tokenizer_pro.log")}',
maxBytes=app.config.get("LOG_MAX_BYTES", 10 * 1024 * 1024),
backupCount=app.config.get("LOG_BACKUP_COUNT", 3)
)
file_handler.setFormatter(logging.Formatter(
'%(asctime)s %(levelname)s: %(message)s [in %(pathname)s:%(lineno)d]'
))
log_level = getattr(logging, app.config.get("LOG_LEVEL", "INFO").upper())
file_handler.setLevel(log_level)
app.logger.addHandler(file_handler)
app.logger.setLevel(log_level)
app.logger.info('Tokenizer Pro startup')
return app