You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@superset.apache.org by "stgztsw (via GitHub)" <gi...@apache.org> on 2025/09/26 02:08:25 UTC

[D] When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris [superset]

GitHub user stgztsw created a discussion: When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris

Superset version 4.0.2
When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris, but anything is ok when work =1 .
When Gunicorn workers are set to more than 1, some chart can not be loaded whith "DB engine Error"
<img width="2272" height="992" alt="image" src="https://github.com/user-attachments/assets/a9a74642-5641-4275-bc6d-0552c7266825" />

error log like this:
2025-09-26 01:50:19,170:ERROR:superset.views.base:Can't load plugin: sqlalchemy.dialects:doris
Traceback (most recent call last):
  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1823, in full_dispatch_request
    rv = self.dispatch_request()
  File "/usr/local/lib/python3.9/site-packages/flask/app.py", line 1799, in dispatch_request
    return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args)
  File "/usr/local/lib/python3.9/site-packages/flask_appbuilder/security/decorators.py", line 95, in wraps
    return f(self, *args, **kwargs)
  File "/app/superset/views/base_api.py", line 127, in wraps
    raise ex
  File "/app/superset/views/base_api.py", line 121, in wraps
    duration, response = time_function(f, self, *args, **kwargs)
  File "/app/superset/utils/core.py", line 1470, in time_function
    response = func(*args, **kwargs)
  File "/app/superset/utils/log.py", line 255, in wrapper
    value = f(*args, **kwargs)
  File "/app/superset/charts/data/api.py", line 262, in data
    return self._get_data_response(
  File "/app/superset/charts/data/api.py", line 418, in _get_data_response
    result = command.run(force_cached=force_cached)
  File "/app/superset/commands/chart/data/get_data_command.py", line 45, in run
    payload = self._query_context.get_payload(
  File "/app/superset/common/query_context.py", line 100, in get_payload
    return self._processor.get_payload(cache_query_context, force_cached)
  File "/app/superset/common/query_context_processor.py", line 647, in get_payload
    query_results = [
  File "/app/superset/common/query_context_processor.py", line 648, in <listcomp>
    get_query_results(
  File "/app/superset/common/query_actions.py", line 227, in get_query_results
    return result_func(query_context, query_obj, force_cached)
  File "/app/superset/common/query_actions.py", line 103, in _get_full
    payload = query_context.get_df_payload(query_obj, force_cached=force_cached)
  File "/app/superset/common/query_context.py", line 121, in get_df_payload
    return self._processor.get_df_payload(
  File "/app/superset/common/query_context_processor.py", line 128, in get_df_payload
    cache_key = self.query_cache_key(query_obj)
  File "/app/superset/common/query_context_processor.py", line 208, in query_cache_key
    extra_cache_keys = datasource.get_extra_cache_keys(query_obj.to_dict())
  File "/app/superset/connectors/sqla/models.py", line 2000, in get_extra_cache_keys
    sqla_query = self.get_sqla_query(**query_obj)
  File "/app/superset/models/helpers.py", line 1510, in get_sqla_query
    template_processor = self.get_template_processor(**template_kwargs)
  File "/app/superset/connectors/sqla/models.py", line 1414, in get_template_processor
    return get_template_processor(table=self, database=self.database, **kwargs)
  File "/app/superset/jinja_context.py", line 665, in get_template_processor
    return template_processor(database=database, table=table, query=query, **kwargs)
  File "/app/superset/jinja_context.py", line 466, in __init__
    self.set_context(**kwargs)
  File "/app/superset/jinja_context.py", line 509, in set_context
    dialect=self._database.get_dialect(),
  File "/app/superset/models/core.py", line 957, in get_dialect
    return sqla_url.get_dialect()()
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/url.py", line 679, in get_dialect
    entrypoint = self._get_entrypoint()
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/engine/url.py", line 661, in _get_entrypoint
    cls = registry.load(name)
  File "/usr/local/lib/python3.9/site-packages/sqlalchemy/util/langhelpers.py", line 343, in load
    raise exc.NoSuchModuleError(
sqlalchemy.exc.NoSuchModuleError: Can't load plugin: sqlalchemy.dialects:doris


GitHub link: https://github.com/apache/superset/discussions/35299

----
This is an automatically sent email for notifications@superset.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@superset.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [D] When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris [superset]

Posted by "dosubot[bot] (via GitHub)" <gi...@apache.org>.
GitHub user dosubot[bot] edited a comment on the discussion: When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris

<!-- Answer -->
This error is usually caused by environment or packaging issues: each Gunicorn worker is a separate process and must have access to the Doris dialect plugin via the pydoris package. If some workers can't load `sqlalchemy.dialects:doris`, it's likely that pydoris isn't installed or registered correctly in the Python environment used by all workers, or the entry_point for the dialect is missing or broken. Superset relies on pydoris to register the dialect via Python packaging metadata, not on its own code—so this is typically an environment or packaging problem, not a Superset bug ([source](https://github.com/apache/superset/issues/34072)).

To troubleshoot:

1. In the same environment where Superset runs, check that the Doris dialect is registered:
   ```python
   from importlib.metadata import entry_points
   eps = entry_points()
   dialects = eps.select(group='sqlalchemy.dialects') if hasattr(eps, 'select') else eps.get('sqlalchemy.dialects', [])
   print([f"{ep.name} = {ep.value}" for ep in dialects if 'doris' in ep.name])
   ```
   You should see something like `doris = pydoris.sqlalchemy.doris:DorisDialect`. If not, reinstall pydoris with `pip install --force-reinstall pydoris` and make sure you're using the same Python environment as Superset.

2. Make sure all Gunicorn workers use the same Python environment and have access to the same installed packages. If you're using Docker, virtualenv, or system Python, confirm that pydoris is installed in the environment where Gunicorn launches Superset.

3. If the dialect is registered but you still see errors, check your Doris SQLAlchemy URI. Superset expects a catalog in the URI; if it's missing, it defaults to `internal`, which can cause connection issues. Try a URI like `doris://user:pass@host:port/internal.schema` ([source](https://github.com/apache/superset/issues/34072)).

4. After making changes, restart all Gunicorn workers to ensure they pick up the correct environment and packages.

If you follow these steps, it should resolve the plugin loading error for all workers. If the problem persists, there may be a deeper packaging or environment issue.


<!-- Dosu Comment Footer -->
*To reply, just mention [@dosu](https://go.dosu.dev/dosubot?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=reply-with-mention&utm_term=apache%2Fsuperset).*

---

Docs are dead. Just use [Dosu](https://dosu.dev?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-tagline&utm_term=apache%2Fsuperset).

[![Leave Feedback](https://img.shields.io/badge/Leave%20Feedback-555555?style=flat)](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-feedback&utm_term=apache%2Fsuperset&message_id=218bc72c-0a84-4e3d-9d76-1fc560221083) [![Ask Dosu about superset](https://img.shields.io/badge/Ask%20Dosu%20about%20superset-2f7b3f?style=flat&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iODYiIGhlaWdodD0iODkiIHZpZXdCb3g9IjAgMCA4NiA4OSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTIzNiAxMi43OTI4TDE3Ljc1OTMgNi42ODE4OFY3Mi41NjY3TDUuMjkyMzYgODQuMDYxOFYxMi43OTI4WiIgZmlsbD0iI0I0QkI5MSIvPjxwYXRoIGQ9Ik0xOC4yNTc1IDczLjExOTZMNTkuMTMyOSA3Mi43NDhMNTEuNzAxMSA4Mi40MDk1TDI5LjAzMzggODYuMjkxTDYuMjM5NjIgODUuMTU1NEwxOC4yNTc1IDczLjExOTZaIiBmaWxsPSIjNzc4NTYxIi8%2BPHBhdGggZD0iTTE3LjQ5MTYgMy43MzYzM0wzLjU4NTU3IDEyLjcwOTlWODMuNTc5MkMzLjU4NTU3IDg0Ljc1NDIgNC45ODU2MyA4NS4zNjUyIDUuODQ3MDUg
 ODQuNTY2TDE5LjYyOTYgNzEuNzgwMSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjQyODQ0IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48bWFzayBpZD0iZG9zdS1kLWN1dG91dCIgZmlsbD0id2hpdGUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDAuNzA0IDAuNTE4MDY2SDE3LjA0MzlWNzYuMjIyMUg0MC43MDRINDIuNTgwNUg0Ny44MDEzQzY4LjcwNjQgNzYuMjIyMSA4NS42NTMzIDU5LjI3NTIgODUuNjUzMyAzOC4zNzAxQzg1LjY1MzMgMTcuNDY1IDY4LjcwNjMgMC41MTgwNjYgNDcuODAxMyAwLjUxODA2Nkg0Mi41ODA1SDQwLjcwNFoiLz48L21hc2s%2BPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MC43MDQgMC41MTgwNjZIMTcuMDQzOVY3Ni4yMjIxSDQwLjcwNEg0Mi41ODA1SDQ3LjgwMTNDNjguNzA2NCA3Ni4yMjIxIDg1LjY1MzMgNTkuMjc1MiA4NS42NTMzIDM4LjM3MDFDODUuNjUzMyAxNy40NjUgNjguNzA2MyAwLjUxODA2NiA0Ny44MDEzIDAuNTE4MDY2SDQyLjU4MDVINDAuNzA0WiIgZmlsbD0iI0YzRjZGMSIvPjxwYXRoIGQ9Ik0xNy4wNDM5IDAuNTE4MDY2Vi02LjU3OTE5SDkuOTQ2NjlWMC41MTgwNjZIMTcuMDQzOVpNMTcuMDQzOSA3Ni4yMjIxSDkuOTQ2NjlWODMuMzE5NEgxNy4wNDM5Vjc2LjIyMjFaTTE3LjA0MzkgNy42MTUzMkg0MC43MDRWLTYuNTc5MTlIMTcuMDQzOVY3LjYxNTMyWk0
 yNC4xNDEyIDc2LjIyMjFWMC41MTgwNjZIOS45NDY2OVY3Ni4yMjIxSDI0LjE0MTJaTTQwLjcwNCA2OS4xMjQ5SDE3LjA0MzlWODMuMzE5NEg0MC43MDRWNjkuMTI0OVpNNDIuNTgwNSA2OS4xMjQ5SDQwLjcwNFY4My4zMTk0SDQyLjU4MDVWNjkuMTI0OVpNNDcuODAxMyA2OS4xMjQ5SDQyLjU4MDVWODMuMzE5NEg0Ny44MDEzVjY5LjEyNDlaTTc4LjU1NiAzOC4zNzAxQzc4LjU1NiA1NS4zNTU1IDY0Ljc4NjcgNjkuMTI0OSA0Ny44MDEzIDY5LjEyNDlWODMuMzE5NEM3Mi42MjYxIDgzLjMxOTQgOTIuNzUwNSA2My4xOTQ5IDkyLjc1MDUgMzguMzcwMUg3OC41NTZaTTQ3LjgwMTMgNy42MTUzMkM2NC43ODY2IDcuNjE1MzIgNzguNTU2IDIxLjM4NDcgNzguNTU2IDM4LjM3MDFIOTIuNzUwNUM5Mi43NTA1IDEzLjU0NTMgNzIuNjI2IC02LjU3OTE5IDQ3LjgwMTMgLTYuNTc5MTlWNy42MTUzMlpNNDIuNTgwNSA3LjYxNTMySDQ3LjgwMTNWLTYuNTc5MTlINDIuNTgwNVY3LjYxNTMyWk00MC43MDQgNy42MTUzMkg0Mi41ODA1Vi02LjU3OTE5SDQwLjcwNFY3LjYxNTMyWiIgZmlsbD0iYmxhY2siIG1hc2s9InVybCgjZG9zdS1kLWN1dG91dCkiLz48cGF0aCBkPSJNNjguOTIxNSAzNi4wMTM1QzY4LjkyMTUgMzYuMDEzNSA2NS43MzY5IDQ5LjQ3MzggNTEuNDIzMSA0OS40NzM4QzM3LjEwOTMgNDkuNDczOCAzMi41Nzg3IDM3LjM1OTYgMzIuNTc4NyAzNi4wMTM1IiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjcuNjkxNjEi
 IHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0wLjM0ODYzMyA4NS40OTQ2QzAuMzQ4NjMzIDg1LjQ5NDYgMjkuNDg1NiA4NS44MzA5IDM0LjgwOSA4NS42OThDNDQuODMzNyA4NS40NDc3IDUxLjI4NzIgODQuNDAyIDU3LjUyNjkgNzguOTcyNEM2Mi44MTI5IDc0LjM3MjcgNzUuMTM0MiA1OS42ODM2IDc1LjEzNDIgNTkuNjgzNiIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjE2NDgyIi8%2BPC9zdmc%2B)](https://github.dosu.com/apache/superset?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-ask-repo&utm_term=apache%2Fsuperset) [![Share Dosu with your team](https://img.shields.io/badge/Share%20Dosu%20with%20your%20team-1f6feb?style=flat)](https://app.dosu.dev/signup?referrer=openSource&source=github-footer&utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=static-docs-share-team&utm_term=apache%2Fsuperset)

GitHub link: https://github.com/apache/superset/discussions/35299#discussioncomment-14517141

----
This is an automatically sent email for notifications@superset.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@superset.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [D] When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris [superset]

Posted by "dosubot[bot] (via GitHub)" <gi...@apache.org>.
GitHub user dosubot[bot] added a comment to the discussion: When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris

<!-- Answer -->
This error is usually caused by environment or packaging issues: each Gunicorn worker is a separate process and must have access to the Doris dialect plugin via the pydoris package. If some workers can't load `sqlalchemy.dialects:doris`, it's likely that pydoris isn't installed or registered correctly in the Python environment used by all workers, or the entry_point for the dialect is missing or broken. Superset relies on pydoris to register the dialect via Python packaging metadata, not on its own code—so this is typically an environment or packaging problem, not a Superset bug ([source](https://github.com/apache/superset/issues/34072)).

To troubleshoot:

1. In the same environment where Superset runs, check that the Doris dialect is registered:
   ```python
   from importlib.metadata import entry_points
   eps = entry_points()
   dialects = eps.select(group='sqlalchemy.dialects') if hasattr(eps, 'select') else eps.get('sqlalchemy.dialects', [])
   print([f"{ep.name} = {ep.value}" for ep in dialects if 'doris' in ep.name])
   ```
   You should see something like `doris = pydoris.sqlalchemy.doris:DorisDialect`. If not, reinstall pydoris with `pip install --force-reinstall pydoris` and make sure you're using the same Python environment as Superset.

2. Make sure all Gunicorn workers use the same Python environment and have access to the same installed packages. If you're using Docker, virtualenv, or system Python, confirm that pydoris is installed in the environment where Gunicorn launches Superset.

3. If the dialect is registered but you still see errors, check your Doris SQLAlchemy URI. Superset expects a catalog in the URI; if it's missing, it defaults to `internal`, which can cause connection issues. Try a URI like `doris://user:pass@host:port/internal.schema` ([source](https://github.com/apache/superset/issues/34072)).

4. After making changes, restart all Gunicorn workers to ensure they pick up the correct environment and packages.

If you follow these steps, it should resolve the plugin loading error for all workers. If the problem persists, there may be a deeper packaging or environment issue.


<!-- Dosu Comment Footer -->
*To reply, just mention [@dosu](https://go.dosu.dev/dosubot).*

---
<sup>How did I do? [Good](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=other)</sup>&nbsp;&nbsp;[![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/a28d3c7e-a9d3-459e-9fb6-3a6f9ff4f357/ask?utm_source=github)&
 nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/apache/superset/discussions/35299)

GitHub link: https://github.com/apache/superset/discussions/35299#discussioncomment-14517141

----
This is an automatically sent email for notifications@superset.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@superset.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [D] When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris [superset]

Posted by "stgztsw (via GitHub)" <gi...@apache.org>.
GitHub user stgztsw added a comment to the discussion: When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris

> This error is usually caused by environment or packaging issues: each Gunicorn worker is a separate process and must have access to the Doris dialect plugin via the pydoris package. If some workers can't load `sqlalchemy.dialects:doris`, it's likely that pydoris isn't installed or registered correctly in the Python environment used by all workers, or the entry_point for the dialect is missing or broken. Superset relies on pydoris to register the dialect via Python packaging metadata, not on its own code—so this is typically an environment or packaging problem, not a Superset bug ([source](https://github.com/apache/superset/issues/34072)).
> 
> To troubleshoot:
> 
> 1. In the same environment where Superset runs, check that the Doris dialect is registered:
>    ```python
>    from importlib.metadata import entry_points
>    eps = entry_points()
>    dialects = eps.select(group='sqlalchemy.dialects') if hasattr(eps, 'select') else eps.get('sqlalchemy.dialects', [])
>    print([f"{ep.name} = {ep.value}" for ep in dialects if 'doris' in ep.name])
>    ```
>    
>    
>        
>          
>        
>    
>          
>        
>    
>        
>      
>    You should see something like `doris = pydoris.sqlalchemy.doris:DorisDialect`. If not, reinstall pydoris with `pip install --force-reinstall pydoris` and make sure you're using the same Python environment as Superset.
> 2. Make sure all Gunicorn workers use the same Python environment and have access to the same installed packages. If you're using Docker, virtualenv, or system Python, confirm that pydoris is installed in the environment where Gunicorn launches Superset.
> 3. If the dialect is registered but you still see errors, check your Doris SQLAlchemy URI. Superset expects a catalog in the URI; if it's missing, it defaults to `internal`, which can cause connection issues. Try a URI like `doris://user:pass@host:port/internal.schema` ([source](https://github.com/apache/superset/issues/34072)).
> 4. After making changes, restart all Gunicorn workers to ensure they pick up the correct environment and packages.
> 
> If you follow these steps, it should resolve the plugin loading error for all workers. If the problem persists, there may be a deeper packaging or environment issue.
> 
> _To reply, just mention [@dosu](https://go.dosu.dev/dosubot)._
> 
> How did I do? [Good](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/218bc72c-0a84-4e3d-9d76-1fc560221083?feedback_type=other)  [![Chat with Dosu](https://camo.githubusercontent.com/d9ffebb979729c9ef0fc4e3090dbae5b17cabbfec8afe378ada6b81913d6ad8a/68747470733a2f2f646f73752e6465762f646
 f73752d636861742d62616467652e737667)](https://app.dosu.dev/a28d3c7e-a9d3-459e-9fb6-3a6f9ff4f357/ask?utm_source=github) [![Join Discord](https://camo.githubusercontent.com/d562c2df5e4567ea41d37f1d91a4da0839d8341037045b103b2da268998de17f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6a6f696e2d3538363546323f6c6f676f3d646973636f7264266c6f676f436f6c6f723d7768697465266c6162656c3d)](https://go.dosu.dev/discord-bot) [![Share on X](https://camo.githubusercontent.com/4649f705e2396d6f328dbc8e800a0509c9c17b3b20253b36706c393df124b93d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f582d73686172652d626c61636b)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/apache/superset/discussions/35299)

Hi @dosu
Thanks for your replay, but your answer can't reslove my problem.
I tried the solution you proposed,and no problem in my enviroment. (When Gunicorn workers are set to 1, everything works normally. This also proves that the environment is problem-free)
I have an idea, but I'm not sure if it's correct. 
Pydoris is a lazily loaded package. When Superset starts, Pydoris has not yet been loaded. At this point, Gunicorn begins forking processes. Therefore, the forked processes do not have Pydoris loaded. However, the main process loads the Pydoris library afterward. This results in a situation where the main process functions normally, while the forked processes encounter exceptions.


GitHub link: https://github.com/apache/superset/discussions/35299#discussioncomment-14518519

----
This is an automatically sent email for notifications@superset.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@superset.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [D] When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris [superset]

Posted by "dosubot[bot] (via GitHub)" <gi...@apache.org>.
GitHub user dosubot[bot] edited a comment on the discussion: When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris

<!-- Answer -->
Your reasoning is correct: if pydoris is lazily loaded and not imported before Gunicorn forks worker processes, the dialect plugin may not be registered in the child processes, causing the error you see with multiple workers.

The most reliable solution is to force the import of pydoris before Gunicorn forks any workers. You can do this by adding `import pydoris` at the very top of your `superset/app.py` file (right after the existing imports). This ensures the Doris dialect is registered in the master process and inherited by all workers, regardless of your deployment method (Docker or not). No changes to Gunicorn or entrypoint scripts are needed—just the import statement.

After making this change, restart Superset so all Gunicorn workers start with the correct environment. This should resolve the plugin loading error for all workers. If you still see issues, double-check your Doris SQLAlchemy URI to ensure the catalog is specified as required (e.g., `doris://user:pass@host:port/internal.schema`) [source](https://github.com/apache/superset/issues/34072).

Let me know if you need help with the exact code change or if the problem persists after this!


<!-- Dosu Comment Footer -->
*To reply, just mention [@dosu](https://go.dosu.dev/dosubot?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=reply-with-mention&utm_term=apache%2Fsuperset).*

---

Share context across your team and agents. Try [Dosu](https://dosu.dev?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=knowledge-infrastructure-tagline&utm_term=apache%2Fsuperset).

[![Leave Feedback](https://img.shields.io/badge/Leave%20Feedback-555555?style=flat)](https://app.dosu.dev/response-feedback?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=knowledge-infrastructure-feedback&utm_term=apache%2Fsuperset&message_id=5f70f9f8-3bf3-4e69-ad67-1fd550f37608) [![Learn about superset with Dosu](https://img.shields.io/badge/Learn%20about%20superset%20with%20Dosu-2f7b3f?style=flat&logo=data%3Aimage%2Fsvg%2Bxml%3Bbase64%2CPHN2ZyB3aWR0aD0iODYiIGhlaWdodD0iODkiIHZpZXdCb3g9IjAgMCA4NiA4OSIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48cGF0aCBkPSJNNS4yOTIzNiAxMi43OTI4TDE3Ljc1OTMgNi42ODE4OFY3Mi41NjY3TDUuMjkyMzYgODQuMDYxOFYxMi43OTI4WiIgZmlsbD0iI0I0QkI5MSIvPjxwYXRoIGQ9Ik0xOC4yNTc1IDczLjExOTZMNTkuMTMyOSA3Mi43NDhMNTEuNzAxMSA4Mi40MDk1TDI5LjAzMzggODYuMjkxTDYuMjM5NjIgODUuMTU1NEwxOC4yNTc1IDczLjExOTZaIiBmaWxsPSIjNzc4NTYxIi8%2BPHBhdGggZD0iTTE3LjQ5MTYgMy43MzYzM0wzLjU4NTU3IDEyLjcwOTlWODMuNTc5MkMzLjU4NTU3IDg0Ljc1NDIgNC4
 5ODU2MyA4NS4zNjUyIDUuODQ3MDUgODQuNTY2TDE5LjYyOTYgNzEuNzgwMSIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjQyODQ0IiBzdHJva2UtbGluZWNhcD0icm91bmQiLz48bWFzayBpZD0iZG9zdS1kLWN1dG91dCIgZmlsbD0id2hpdGUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgY2xpcC1ydWxlPSJldmVub2RkIiBkPSJNNDAuNzA0IDAuNTE4MDY2SDE3LjA0MzlWNzYuMjIyMUg0MC43MDRINDIuNTgwNUg0Ny44MDEzQzY4LjcwNjQgNzYuMjIyMSA4NS42NTMzIDU5LjI3NTIgODUuNjUzMyAzOC4zNzAxQzg1LjY1MzMgMTcuNDY1IDY4LjcwNjMgMC41MTgwNjYgNDcuODAxMyAwLjUxODA2Nkg0Mi41ODA1SDQwLjcwNFoiLz48L21hc2s%2BPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00MC43MDQgMC41MTgwNjZIMTcuMDQzOVY3Ni4yMjIxSDQwLjcwNEg0Mi41ODA1SDQ3LjgwMTNDNjguNzA2NCA3Ni4yMjIxIDg1LjY1MzMgNTkuMjc1MiA4NS42NTMzIDM4LjM3MDFDODUuNjUzMyAxNy40NjUgNjguNzA2MyAwLjUxODA2NiA0Ny44MDEzIDAuNTE4MDY2SDQyLjU4MDVINDAuNzA0WiIgZmlsbD0iI0YzRjZGMSIvPjxwYXRoIGQ9Ik0xNy4wNDM5IDAuNTE4MDY2Vi02LjU3OTE5SDkuOTQ2NjlWMC41MTgwNjZIMTcuMDQzOVpNMTcuMDQzOSA3Ni4yMjIxSDkuOTQ2NjlWODMuMzE5NEgxNy4wNDM5Vjc2LjIyMjFaTTE3LjA0MzkgNy42MTUzMkg0MC43MDRWLTYuNT
 c5MTlIMTcuMDQzOVY3LjYxNTMyWk0yNC4xNDEyIDc2LjIyMjFWMC41MTgwNjZIOS45NDY2OVY3Ni4yMjIxSDI0LjE0MTJaTTQwLjcwNCA2OS4xMjQ5SDE3LjA0MzlWODMuMzE5NEg0MC43MDRWNjkuMTI0OVpNNDIuNTgwNSA2OS4xMjQ5SDQwLjcwNFY4My4zMTk0SDQyLjU4MDVWNjkuMTI0OVpNNDcuODAxMyA2OS4xMjQ5SDQyLjU4MDVWODMuMzE5NEg0Ny44MDEzVjY5LjEyNDlaTTc4LjU1NiAzOC4zNzAxQzc4LjU1NiA1NS4zNTU1IDY0Ljc4NjcgNjkuMTI0OSA0Ny44MDEzIDY5LjEyNDlWODMuMzE5NEM3Mi42MjYxIDgzLjMxOTQgOTIuNzUwNSA2My4xOTQ5IDkyLjc1MDUgMzguMzcwMUg3OC41NTZaTTQ3LjgwMTMgNy42MTUzMkM2NC43ODY2IDcuNjE1MzIgNzguNTU2IDIxLjM4NDcgNzguNTU2IDM4LjM3MDFIOTIuNzUwNUM5Mi43NTA1IDEzLjU0NTMgNzIuNjI2IC02LjU3OTE5IDQ3LjgwMTMgLTYuNTc5MTlWNy42MTUzMlpNNDIuNTgwNSA3LjYxNTMySDQ3LjgwMTNWLTYuNTc5MTlINDIuNTgwNVY3LjYxNTMyWk00MC43MDQgNy42MTUzMkg0Mi41ODA1Vi02LjU3OTE5SDQwLjcwNFY3LjYxNTMyWiIgZmlsbD0iYmxhY2siIG1hc2s9InVybCgjZG9zdS1kLWN1dG91dCkiLz48cGF0aCBkPSJNNjguOTIxNSAzNi4wMTM1QzY4LjkyMTUgMzYuMDEzNSA2NS43MzY5IDQ5LjQ3MzggNTEuNDIzMSA0OS40NzM4QzM3LjEwOTMgNDkuNDczOCAzMi41Nzg3IDM3LjM1OTYgMzIuNTc4NyAzNi4wMTM1IiBzdHJva2U9ImJsYWNrIiB
 zdHJva2Utd2lkdGg9IjcuNjkxNjEiIHN0cm9rZS1saW5lY2FwPSJyb3VuZCIgc3Ryb2tlLWxpbmVqb2luPSJyb3VuZCIvPjxwYXRoIGQ9Ik0wLjM0ODYzMyA4NS40OTQ2QzAuMzQ4NjMzIDg1LjQ5NDYgMjkuNDg1NiA4NS44MzA5IDM0LjgwOSA4NS42OThDNDQuODMzNyA4NS40NDc3IDUxLjI4NzIgODQuNDAyIDU3LjUyNjkgNzguOTcyNEM2Mi44MTI5IDc0LjM3MjcgNzUuMTM0MiA1OS42ODM2IDc1LjEzNDIgNTkuNjgzNiIgc3Ryb2tlPSJibGFjayIgc3Ryb2tlLXdpZHRoPSI2LjE2NDgyIi8%2BPC9zdmc%2B)](https://github.dosu.com/apache/superset?utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=knowledge-infrastructure-learn-repo&utm_term=apache%2Fsuperset) [![Add Dosu to your team](https://img.shields.io/badge/Add%20Dosu%20to%20your%20team-1f6feb?style=flat)](https://app.dosu.dev/signup?referrer=openSource&source=github-footer&utm_source=github&utm_medium=bot-comment&utm_campaign=github-comment-footer-20260415&utm_content=knowledge-infrastructure-add-team&utm_term=apache%2Fsuperset)

GitHub link: https://github.com/apache/superset/discussions/35299#discussioncomment-14518574

----
This is an automatically sent email for notifications@superset.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@superset.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [D] When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris [superset]

Posted by "stgztsw (via GitHub)" <gi...@apache.org>.
GitHub user stgztsw added a comment to the discussion: When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris

@dosu 
Hi dosu, can you help to resolve this problem?

GitHub link: https://github.com/apache/superset/discussions/35299#discussioncomment-14517122

----
This is an automatically sent email for notifications@superset.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@superset.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org


Re: [D] When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris [superset]

Posted by "dosubot[bot] (via GitHub)" <gi...@apache.org>.
GitHub user dosubot[bot] added a comment to the discussion: When Gunicorn workers are set to more than 1, some workers will fail to load sqlalchemy.dialects:doris

<!-- Answer -->
Your reasoning is correct: if pydoris is lazily loaded and not imported before Gunicorn forks worker processes, the dialect plugin may not be registered in the child processes, causing the error you see with multiple workers.

The most reliable solution is to force the import of pydoris before Gunicorn forks any workers. You can do this by adding `import pydoris` at the very top of your `superset/app.py` file (right after the existing imports). This ensures the Doris dialect is registered in the master process and inherited by all workers, regardless of your deployment method (Docker or not). No changes to Gunicorn or entrypoint scripts are needed—just the import statement.

After making this change, restart Superset so all Gunicorn workers start with the correct environment. This should resolve the plugin loading error for all workers. If you still see issues, double-check your Doris SQLAlchemy URI to ensure the catalog is specified as required (e.g., `doris://user:pass@host:port/internal.schema`) [source](https://github.com/apache/superset/issues/34072).

Let me know if you need help with the exact code change or if the problem persists after this!


<!-- Dosu Comment Footer -->
*To reply, just mention [@dosu](https://go.dosu.dev/dosubot).*

---
<sup>How did I do? [Good](https://app.dosu.dev/response-feedback/5f70f9f8-3bf3-4e69-ad67-1fd550f37608?feedback_type=great_response) | [Irrelevant](https://app.dosu.dev/response-feedback/5f70f9f8-3bf3-4e69-ad67-1fd550f37608?feedback_type=irrelevant_answer) | [Incorrect](https://app.dosu.dev/response-feedback/5f70f9f8-3bf3-4e69-ad67-1fd550f37608?feedback_type=incorrect_sources) | [Verbose](https://app.dosu.dev/response-feedback/5f70f9f8-3bf3-4e69-ad67-1fd550f37608?feedback_type=too_verbose) | [Hallucination](https://app.dosu.dev/response-feedback/5f70f9f8-3bf3-4e69-ad67-1fd550f37608?feedback_type=hallucination) | [Report 🐛](https://app.dosu.dev/response-feedback/5f70f9f8-3bf3-4e69-ad67-1fd550f37608?feedback_type=bug_report) | [Other](https://app.dosu.dev/response-feedback/5f70f9f8-3bf3-4e69-ad67-1fd550f37608?feedback_type=other)</sup>&nbsp;&nbsp;[![Chat with Dosu](https://dosu.dev/dosu-chat-badge.svg)](https://app.dosu.dev/a28d3c7e-a9d3-459e-9fb6-3a6f9ff4f357/ask?utm_source=github)&
 nbsp;[![Join Discord](https://img.shields.io/badge/join-5865F2?logo=discord&logoColor=white&label=)](https://go.dosu.dev/discord-bot)&nbsp;[![Share on X](https://img.shields.io/badge/X-share-black)](https://twitter.com/intent/tweet?text=%40dosu_ai%20helped%20me%20solve%20this%20issue!&url=https%3A//github.com/apache/superset/discussions/35299)

GitHub link: https://github.com/apache/superset/discussions/35299#discussioncomment-14518574

----
This is an automatically sent email for notifications@superset.apache.org.
To unsubscribe, please send an email to: notifications-unsubscribe@superset.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@superset.apache.org
For additional commands, e-mail: notifications-help@superset.apache.org