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