| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- 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)
|