- 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
 - 
 - # DO NOT REMOVE BELOW
 - from events import event_handlers  # noqa: F401
 - from extensions.ext_database import db
 - 
 - # TODO: Find a way to avoid importing models here
 - from models import account, dataset, model, source, task, tool, tools, web  # noqa: F401
 - 
 - # DO NOT REMOVE ABOVE
 - 
 - 
 - warnings.simplefilter("ignore", ResourceWarning)
 - 
 - os.environ["TZ"] = "UTC"
 - # windows platform not support tzset
 - if hasattr(time, "tzset"):
 -     time.tzset()
 - 
 - 
 - # create app
 - 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)
 
 
  |