47 lines
1.4 KiB
Python
47 lines
1.4 KiB
Python
from app.api import weather
|
|
from flask import Flask
|
|
import os
|
|
"""
|
|
-------------------------------------------------------------------------
|
|
File: __init__.py
|
|
Description:
|
|
Author: 소지안 프로
|
|
Created: 2026-02-02
|
|
Last Modified: 2026-02-02
|
|
-------------------------------------------------------------------------
|
|
"""
|
|
|
|
def create_app():
|
|
app = Flask(__name__)
|
|
|
|
# 설정
|
|
app.config['SECRET_KEY'] = 'your-secret-key-here'
|
|
|
|
# 라우트 등록
|
|
from app.routes import main
|
|
app.register_blueprint(main.bp)
|
|
|
|
# API 블루프린트 등록
|
|
from app.api import water_body_segmentation, flood, drought, vulnerability, terrain
|
|
app.register_blueprint(water_body_segmentation.bp)
|
|
app.register_blueprint(flood.bp)
|
|
app.register_blueprint(drought.bp)
|
|
app.register_blueprint(vulnerability.bp)
|
|
app.register_blueprint(terrain.bp)
|
|
app.register_blueprint(weather.bp)
|
|
|
|
# 기상청 예보: 매일 밤 12시(KST)에 API 호출하여 캐시 갱신
|
|
if not app.debug or os.environ.get('WERKZEUG_RUN_MAIN') == 'true':
|
|
from apscheduler.schedulers.background import BackgroundScheduler
|
|
scheduler = BackgroundScheduler(timezone='Asia/Seoul')
|
|
scheduler.add_job(
|
|
weather.fetch_and_cache_forecast,
|
|
'cron',
|
|
hour=0,
|
|
minute=0,
|
|
id='kma_midnight_fetch'
|
|
)
|
|
scheduler.start()
|
|
|
|
return app
|