Signed-off-by: zhanluxianshen <zhanluxianshen@163.com> Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>tags/1.8.0
| if not messages: | if not messages: | ||||
| break | break | ||||
| for message in messages: | for message in messages: | ||||
| plan_sandbox_clean_message_day = message.created_at | |||||
| app = db.session.query(App).filter_by(id=message.app_id).first() | app = db.session.query(App).filter_by(id=message.app_id).first() | ||||
| if not app: | if not app: | ||||
| logger.warning( | logger.warning( |
| if queue_length >= threshold: | if queue_length >= threshold: | ||||
| warning_msg = f"Queue {queue_name} task count exceeded the limit.: {queue_length}/{threshold}" | warning_msg = f"Queue {queue_name} task count exceeded the limit.: {queue_length}/{threshold}" | ||||
| logger.warning(click.style(warning_msg, fg="red")) | |||||
| alter_emails = dify_config.QUEUE_MONITOR_ALERT_EMAILS | |||||
| if alter_emails: | |||||
| to_list = alter_emails.split(",") | |||||
| logging.warning(click.style(warning_msg, fg="red")) | |||||
| alert_emails = dify_config.QUEUE_MONITOR_ALERT_EMAILS | |||||
| if alert_emails: | |||||
| to_list = alert_emails.split(",") | |||||
| email_service = get_email_i18n_service() | email_service = get_email_i18n_service() | ||||
| for to in to_list: | for to in to_list: | ||||
| try: | try: |
| import logging | import logging | ||||
| from typing import Optional | from typing import Optional | ||||
| from core.entities.model_entities import ModelStatus, ModelWithProviderEntity, ProviderModelWithStatusEntity | |||||
| from core.entities.model_entities import ModelWithProviderEntity, ProviderModelWithStatusEntity | |||||
| from core.model_runtime.entities.model_entities import ModelType, ParameterRule | from core.model_runtime.entities.model_entities import ModelType, ParameterRule | ||||
| from core.model_runtime.model_providers.model_provider_factory import ModelProviderFactory | from core.model_runtime.model_providers.model_provider_factory import ModelProviderFactory | ||||
| from core.provider_manager import ProviderManager | from core.provider_manager import ProviderManager | ||||
| provider_configurations = self.provider_manager.get_configurations(tenant_id) | provider_configurations = self.provider_manager.get_configurations(tenant_id) | ||||
| # Get provider available models | # Get provider available models | ||||
| models = provider_configurations.get_models(model_type=ModelType.value_of(model_type)) | |||||
| models = provider_configurations.get_models(model_type=ModelType.value_of(model_type), only_active=True) | |||||
| # Group models by provider | # Group models by provider | ||||
| provider_models: dict[str, list[ModelWithProviderEntity]] = {} | provider_models: dict[str, list[ModelWithProviderEntity]] = {} | ||||
| if model.deprecated: | if model.deprecated: | ||||
| continue | continue | ||||
| if model.status != ModelStatus.ACTIVE: | |||||
| continue | |||||
| provider_models[model.provider.provider].append(model) | provider_models[model.provider.provider].append(model) | ||||
| # convert to ProviderWithModelsResponse list | # convert to ProviderWithModelsResponse list |
| # get project url | # get project url | ||||
| if tracing_provider in ("arize", "phoenix"): | if tracing_provider in ("arize", "phoenix"): | ||||
| project_url = OpsTraceManager.get_trace_config_project_url(tracing_config, tracing_provider) | |||||
| try: | |||||
| project_url = OpsTraceManager.get_trace_config_project_url(tracing_config, tracing_provider) | |||||
| except Exception: | |||||
| project_url = None | |||||
| elif tracing_provider == "langfuse": | elif tracing_provider == "langfuse": | ||||
| project_key = OpsTraceManager.get_trace_config_project_key(tracing_config, tracing_provider) | |||||
| project_url = f"{tracing_config.get('host')}/project/{project_key}" | |||||
| try: | |||||
| project_key = OpsTraceManager.get_trace_config_project_key(tracing_config, tracing_provider) | |||||
| project_url = f"{tracing_config.get('host')}/project/{project_key}" | |||||
| except Exception: | |||||
| project_url = None | |||||
| elif tracing_provider in ("langsmith", "opik"): | elif tracing_provider in ("langsmith", "opik"): | ||||
| project_url = OpsTraceManager.get_trace_config_project_url(tracing_config, tracing_provider) | |||||
| try: | |||||
| project_url = OpsTraceManager.get_trace_config_project_url(tracing_config, tracing_provider) | |||||
| except Exception: | |||||
| project_url = None | |||||
| else: | else: | ||||
| project_url = None | project_url = None | ||||
| @classmethod | @classmethod | ||||
| def _get_account_jwt_token(cls, account: Account) -> str: | def _get_account_jwt_token(cls, account: Account) -> str: | ||||
| exp_dt = datetime.now(UTC) + timedelta(hours=dify_config.ACCESS_TOKEN_EXPIRE_MINUTES * 24) | |||||
| exp_dt = datetime.now(UTC) + timedelta(minutes=dify_config.ACCESS_TOKEN_EXPIRE_MINUTES * 24) | |||||
| exp = int(exp_dt.timestamp()) | exp = int(exp_dt.timestamp()) | ||||
| payload = { | payload = { |
| # Verify mock interactions | # Verify mock interactions | ||||
| mock_provider_manager.get_configurations.assert_called_once_with(tenant.id) | mock_provider_manager.get_configurations.assert_called_once_with(tenant.id) | ||||
| mock_provider_configurations.get_models.assert_called_once_with(model_type=ModelType.LLM) | |||||
| mock_provider_configurations.get_models.assert_called_once_with(model_type=ModelType.LLM, only_active=True) | |||||
| def test_get_model_parameter_rules_success(self, db_session_with_containers, mock_external_service_dependencies): | def test_get_model_parameter_rules_success(self, db_session_with_containers, mock_external_service_dependencies): | ||||
| """ | """ |