mirror of
				https://github.com/langgenius/dify.git
				synced 2025-11-04 04:43:09 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			68 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
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
 | 
						|
        }
 |