app_config.py 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. from pydantic import computed_field
  2. from pydantic_settings import BaseSettings, SettingsConfigDict
  3. from configs.deploy import DeploymentConfig
  4. from configs.enterprise import EnterpriseFeatureConfig
  5. from configs.extra import ExtraServiceConfig
  6. from configs.feature import FeatureConfig
  7. from configs.middleware import MiddlewareConfig
  8. from configs.packaging import PackagingInfo
  9. # TODO: Both `BaseModel` and `BaseSettings` has `model_config` attribute but they are in different types.
  10. # This inheritance is depends on the order of the classes.
  11. # It is better to use `BaseSettings` as the base class.
  12. class DifyConfig(
  13. # based on pydantic-settings
  14. BaseSettings,
  15. # Packaging info
  16. PackagingInfo,
  17. # Deployment configs
  18. DeploymentConfig,
  19. # Feature configs
  20. FeatureConfig,
  21. # Middleware configs
  22. MiddlewareConfig,
  23. # Extra service configs
  24. ExtraServiceConfig,
  25. # Enterprise feature configs
  26. # **Before using, please contact business@dify.ai by email to inquire about licensing matters.**
  27. EnterpriseFeatureConfig,
  28. ):
  29. model_config = SettingsConfigDict(
  30. # read from dotenv format config file
  31. env_file='.env',
  32. env_file_encoding='utf-8',
  33. # ignore extra attributes
  34. extra='ignore',
  35. )
  36. CODE_MAX_NUMBER: int = 9223372036854775807
  37. CODE_MIN_NUMBER: int = -9223372036854775808
  38. CODE_MAX_STRING_LENGTH: int = 80000
  39. CODE_MAX_STRING_ARRAY_LENGTH: int = 30
  40. CODE_MAX_OBJECT_ARRAY_LENGTH: int = 30
  41. CODE_MAX_NUMBER_ARRAY_LENGTH: int = 1000
  42. HTTP_REQUEST_MAX_CONNECT_TIMEOUT: int = 300
  43. HTTP_REQUEST_MAX_READ_TIMEOUT: int = 600
  44. HTTP_REQUEST_MAX_WRITE_TIMEOUT: int = 600
  45. HTTP_REQUEST_NODE_MAX_BINARY_SIZE: int = 1024 * 1024 * 10
  46. @computed_field
  47. def HTTP_REQUEST_NODE_READABLE_MAX_BINARY_SIZE(self) -> str:
  48. return f'{self.HTTP_REQUEST_NODE_MAX_BINARY_SIZE / 1024 / 1024:.2f}MB'
  49. HTTP_REQUEST_NODE_MAX_TEXT_SIZE: int = 1024 * 1024
  50. @computed_field
  51. def HTTP_REQUEST_NODE_READABLE_MAX_TEXT_SIZE(self) -> str:
  52. return f'{self.HTTP_REQUEST_NODE_MAX_TEXT_SIZE / 1024 / 1024:.2f}MB'
  53. SSRF_PROXY_HTTP_URL: str | None = None
  54. SSRF_PROXY_HTTPS_URL: str | None = None