Merge branch 'langgenius:main' into main
commit
9df6623a1b
@ -0,0 +1,96 @@
|
|||||||
|
exclude = [
|
||||||
|
"migrations/*",
|
||||||
|
]
|
||||||
|
line-length = 120
|
||||||
|
|
||||||
|
[format]
|
||||||
|
quote-style = "double"
|
||||||
|
|
||||||
|
[lint]
|
||||||
|
preview = true
|
||||||
|
select = [
|
||||||
|
"B", # flake8-bugbear rules
|
||||||
|
"C4", # flake8-comprehensions
|
||||||
|
"E", # pycodestyle E rules
|
||||||
|
"F", # pyflakes rules
|
||||||
|
"FURB", # refurb rules
|
||||||
|
"I", # isort rules
|
||||||
|
"N", # pep8-naming
|
||||||
|
"PT", # flake8-pytest-style rules
|
||||||
|
"PLC0208", # iteration-over-set
|
||||||
|
"PLC2801", # unnecessary-dunder-call
|
||||||
|
"PLC0414", # useless-import-alias
|
||||||
|
"PLE0604", # invalid-all-object
|
||||||
|
"PLE0605", # invalid-all-format
|
||||||
|
"PLR0402", # manual-from-import
|
||||||
|
"PLR1711", # useless-return
|
||||||
|
"PLR1714", # repeated-equality-comparison
|
||||||
|
"RUF013", # implicit-optional
|
||||||
|
"RUF019", # unnecessary-key-check
|
||||||
|
"RUF100", # unused-noqa
|
||||||
|
"RUF101", # redirected-noqa
|
||||||
|
"RUF200", # invalid-pyproject-toml
|
||||||
|
"RUF022", # unsorted-dunder-all
|
||||||
|
"S506", # unsafe-yaml-load
|
||||||
|
"SIM", # flake8-simplify rules
|
||||||
|
"TRY400", # error-instead-of-exception
|
||||||
|
"TRY401", # verbose-log-message
|
||||||
|
"UP", # pyupgrade rules
|
||||||
|
"W191", # tab-indentation
|
||||||
|
"W605", # invalid-escape-sequence
|
||||||
|
]
|
||||||
|
|
||||||
|
ignore = [
|
||||||
|
"E402", # module-import-not-at-top-of-file
|
||||||
|
"E711", # none-comparison
|
||||||
|
"E712", # true-false-comparison
|
||||||
|
"E721", # type-comparison
|
||||||
|
"E722", # bare-except
|
||||||
|
"E731", # lambda-assignment
|
||||||
|
"F821", # undefined-name
|
||||||
|
"F841", # unused-variable
|
||||||
|
"FURB113", # repeated-append
|
||||||
|
"FURB152", # math-constant
|
||||||
|
"UP007", # non-pep604-annotation
|
||||||
|
"UP032", # f-string
|
||||||
|
"B005", # strip-with-multi-characters
|
||||||
|
"B006", # mutable-argument-default
|
||||||
|
"B007", # unused-loop-control-variable
|
||||||
|
"B026", # star-arg-unpacking-after-keyword-arg
|
||||||
|
"B904", # raise-without-from-inside-except
|
||||||
|
"B905", # zip-without-explicit-strict
|
||||||
|
"N806", # non-lowercase-variable-in-function
|
||||||
|
"N815", # mixed-case-variable-in-class-scope
|
||||||
|
"PT011", # pytest-raises-too-broad
|
||||||
|
"SIM102", # collapsible-if
|
||||||
|
"SIM103", # needless-bool
|
||||||
|
"SIM105", # suppressible-exception
|
||||||
|
"SIM107", # return-in-try-except-finally
|
||||||
|
"SIM108", # if-else-block-instead-of-if-exp
|
||||||
|
"SIM113", # eumerate-for-loop
|
||||||
|
"SIM117", # multiple-with-statements
|
||||||
|
"SIM210", # if-expr-with-true-false
|
||||||
|
"SIM300", # yoda-conditions,
|
||||||
|
]
|
||||||
|
|
||||||
|
[lint.per-file-ignores]
|
||||||
|
"__init__.py" = [
|
||||||
|
"F401", # unused-import
|
||||||
|
"F811", # redefined-while-unused
|
||||||
|
]
|
||||||
|
"configs/*" = [
|
||||||
|
"N802", # invalid-function-name
|
||||||
|
]
|
||||||
|
"libs/gmpy2_pkcs10aep_cipher.py" = [
|
||||||
|
"N803", # invalid-argument-name
|
||||||
|
]
|
||||||
|
"tests/*" = [
|
||||||
|
"F811", # redefined-while-unused
|
||||||
|
"F401", # unused-import
|
||||||
|
]
|
||||||
|
|
||||||
|
[lint.pyflakes]
|
||||||
|
extend-generics = [
|
||||||
|
"_pytest.monkeypatch",
|
||||||
|
"tests.integration_tests",
|
||||||
|
]
|
||||||
@ -1,111 +1,13 @@
|
|||||||
import os
|
|
||||||
import sys
|
|
||||||
|
|
||||||
from configs import dify_config
|
|
||||||
|
|
||||||
if not dify_config.DEBUG:
|
|
||||||
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 app_factory import create_app
|
||||||
|
from libs import threadings_utils, version_utils
|
||||||
|
|
||||||
# DO NOT REMOVE BELOW
|
# preparation before creating app
|
||||||
from events import event_handlers # noqa: F401
|
version_utils.check_supported_python_version()
|
||||||
from extensions.ext_database import db
|
threadings_utils.apply_gevent_threading_patch()
|
||||||
|
|
||||||
# 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
|
|
||||||
|
|
||||||
if sys.version_info[:2] == (3, 10):
|
|
||||||
print("Warning: Python 3.10 will not be supported in the next version.")
|
|
||||||
|
|
||||||
|
|
||||||
warnings.simplefilter("ignore", ResourceWarning)
|
|
||||||
|
|
||||||
os.environ["TZ"] = "UTC"
|
|
||||||
# windows platform not support tzset
|
|
||||||
if hasattr(time, "tzset"):
|
|
||||||
time.tzset()
|
|
||||||
|
|
||||||
|
|
||||||
# create app
|
# create app
|
||||||
app = create_app()
|
app = create_app()
|
||||||
celery = app.extensions["celery"]
|
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.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__":
|
if __name__ == "__main__":
|
||||||
app.run(host="0.0.0.0", port=5001)
|
app.run(host="0.0.0.0", port=5001)
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue