12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- import json
- import os
- import threading
- from flask import Response
- from configs import dify_config
- from dify_app import DifyApp
- def init_app(app: DifyApp):
- @app.after_request
- def after_request(response):
- """Add Version headers to the response."""
- 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():
- from extensions.ext_database import db
- engine = db.engine
- # TODO: Fix the type error
- # FIXME maybe its sqlalchemy issue
- return {
- "pid": os.getpid(),
- "pool_size": engine.pool.size(), # type: ignore
- "checked_in_connections": engine.pool.checkedin(), # type: ignore
- "checked_out_connections": engine.pool.checkedout(), # type: ignore
- "overflow_connections": engine.pool.overflow(), # type: ignore
- "connection_timeout": engine.pool.timeout(), # type: ignore
- "recycle_time": db.engine.pool._recycle, # type: ignore
- }
|