mondrian icon indicating copy to clipboard operation
mondrian copied to clipboard

Error when launching something with mondrian from celery task

Open jrmi opened this issue 4 years ago • 0 comments

When you launch something from celery task, stdout and stderr are proxyfied with LoggingProxy object (See doc). This object doesn't have encoding nor buffer properties so when Mondrian is initialized in that context, an exception is raised (here as bonobo dependency):

[...]
celery_1          |   File "/code/venv/lib/python3.6/site-packages/bonobo/__init__.py", line 10, in <module>
celery_1          |     from bonobo._api import *
celery_1          |   File "/code/venv/lib/python3.6/site-packages/bonobo/_api.py", line 10, in <module>
celery_1          |     from bonobo.execution.strategies import create_strategy
celery_1          |   File "/code/venv/lib/python3.6/site-packages/bonobo/execution/strategies/__init__.py", line 9, in <module>
celery_1          |     from bonobo.execution.strategies.executor import ProcessPoolExecutorStrategy, ThreadPoolExecutorStrategy
celery_1          |   File "/code/venv/lib/python3.6/site-packages/bonobo/execution/strategies/executor.py", line 7, in <module>
celery_1          |     from bonobo.execution.strategies.base import Strategy
celery_1          |   File "/code/venv/lib/python3.6/site-packages/bonobo/execution/strategies/base.py", line 1, in <module>
celery_1          |     from bonobo.execution.contexts.graph import GraphExecutionContext
celery_1          |   File "/code/venv/lib/python3.6/site-packages/bonobo/execution/contexts/__init__.py", line 8, in <module>
celery_1          |     from bonobo.execution.contexts.graph import GraphExecutionContext
celery_1          |   File "/code/venv/lib/python3.6/site-packages/bonobo/execution/contexts/graph.py", line 9, in <module>
celery_1          |     from bonobo.execution.contexts.node import NodeExecutionContext
celery_1          |   File "/code/venv/lib/python3.6/site-packages/bonobo/execution/contexts/node.py", line 12, in <module>
celery_1          |     from bonobo.execution.contexts.base import BaseContext
celery_1          |   File "/code/venv/lib/python3.6/site-packages/bonobo/execution/contexts/base.py", line 6, in <module>
celery_1          |     from mondrian import term
celery_1          |   File "/code/venv/lib/python3.6/site-packages/mondrian/__init__.py", line 23, in <module>
celery_1          |     if sys.stdout.encoding is None or sys.stdout.encoding == "ANSI_X3.4-1968":
celery_1          | AttributeError: 'LoggingProxy' object has no attribute 'encoding'

If think this issue is relate to #16

This code is problematic https://github.com/python-mondrian/mondrian/blob/15ea7b9d13e4207e072209e19b3536371b79df46/mondrian/init.py#L21

jrmi avatar Oct 12 '21 12:10 jrmi