| import os |
|
|
| from configs import dify_config |
|
|
| if os.environ.get("DEBUG", "false").lower() != "true": |
| from gevent import monkey |
|
|
| monkey.patch_all() |
|
|
| import grpc.experimental.gevent |
|
|
| grpc.experimental.gevent.init_gevent() |
|
|
| import json |
| import threading |
| import time |
| import warnings |
|
|
| from flask import Response |
|
|
| from app_factory import create_app |
|
|
| |
| from events import event_handlers |
| from extensions.ext_database import db |
|
|
| |
| from models import account, dataset, model, source, task, tool, tools, web |
|
|
| |
|
|
|
|
| warnings.simplefilter("ignore", ResourceWarning) |
|
|
| os.environ["TZ"] = "UTC" |
| |
| if hasattr(time, "tzset"): |
| time.tzset() |
|
|
|
|
| |
| app = create_app() |
| celery = app.extensions["celery"] |
|
|
| if dify_config.TESTING: |
| print("App is running in TESTING mode") |
|
|
|
|
| @app.after_request |
| def after_request(response): |
| """Add Version headers to the response.""" |
| response.set_cookie("remember_token", "", expires=0) |
| response.headers.add("X-Version", dify_config.CURRENT_VERSION) |
| response.headers.add("X-Env", dify_config.DEPLOY_ENV) |
| return response |
|
|
|
|
| @app.route("/health") |
| def health(): |
| return Response( |
| json.dumps({"pid": os.getpid(), "status": "ok", "version": dify_config.CURRENT_VERSION}), |
| status=200, |
| content_type="application/json", |
| ) |
|
|
|
|
| @app.route("/threads") |
| def threads(): |
| num_threads = threading.active_count() |
| threads = threading.enumerate() |
|
|
| thread_list = [] |
| for thread in threads: |
| thread_name = thread.name |
| thread_id = thread.ident |
| is_alive = thread.is_alive() |
|
|
| thread_list.append( |
| { |
| "name": thread_name, |
| "id": thread_id, |
| "is_alive": is_alive, |
| } |
| ) |
|
|
| return { |
| "pid": os.getpid(), |
| "thread_num": num_threads, |
| "threads": thread_list, |
| } |
|
|
|
|
| @app.route("/db-pool-stat") |
| def pool_stat(): |
| engine = db.engine |
| return { |
| "pid": os.getpid(), |
| "pool_size": engine.pool.size(), |
| "checked_in_connections": engine.pool.checkedin(), |
| "checked_out_connections": engine.pool.checkedout(), |
| "overflow_connections": engine.pool.overflow(), |
| "connection_timeout": engine.pool.timeout(), |
| "recycle_time": db.engine.pool._recycle, |
| } |
|
|
|
|
| if __name__ == "__main__": |
| app.run(host="0.0.0.0", port=5001) |
|
|