8000 Using kwargs in chained tasks fails to create Job object · Issue #337 · girder/girder_worker · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
Using kwargs in chained tasks fails to create Job object #337
Open
@Xarthisius

Description

@Xarthisius

Girder worker mishandles keyword arguments in chained tasks.

Steps to reproduce

Consider the following task:

@girder_job(title='Test Kwargs')
@app.task(bind=True)
def kwargs_task(self, **kwargs):
    print('Got {}'.format(kwargs))
    return kwargs

when executed from within girder shell as an authenticated user:

from girder.models.user import User
from girder.models.token import Token
from girder.plugins.jobs.constants import REST_CREATE_JOB_TOKEN_SCOPE
from gwvolman.tasks import kwargs_task

user = User().list().next()
token = Token().createToken(user=user)
Token().addScope(token, scope=REST_CREATE_JOB_TOKEN_SCOPE)
task1 = kwargs_task.signature(kwargs={'a': 1, 'b':2, 'girder_client_token': str(token['_id'])}, immutable=True)
task2 = kwargs_task.signature(kwargs={'c': [1,2,3], 'd': dict(a=4), 'girder_client_token': str(token['_id'])}, immutable=True)
task2.delay()  # works fine
(task1 | task2).delay()  # fails

the last command yields:

[2019-05-29 17:56:56,814: INFO/MainProcess] Received task: gwvolman.tasks.kwargs_task[33482416-4807-4787-92cb-0adfe50b2ada]  
[2019-05-29 17:56:56,817: WARNING/ForkPoolWorker-2] [2019-05-29 17:56:56,817] WARNING: No jobInfoSpec. Setting job_manager to None.
[2019-05-29 17:56:56,817: WARNING/ForkPoolWorker-2] No jobInfoSpec. Setting job_manager to None.
[2019-05-29 17:56:56,817: WARNING/ForkPoolWorker-2] Got {'b': 2, 'a': 1}
[2019-05-29 17:56:56,820: ERROR/ForkPoolWorker-2] Task gwvolman.tasks.kwargs_task[33482416-4807-4787-92cb-0adfe50b2ada] raised unexpected: AttributeError("'list' object has no attribute 'apply_async'",)
Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/kombu/utils/objects.py", line 42, in __get__
    return obj.__dict__[self.__name__]
KeyError: '_apply_async'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/usr/local/lib/python3.5/dist-packages/celery/app/trace.py", line 439, in trace_task
    parent_id=uuid, root_id=root_id,
  File "/usr/local/lib/python3.5/dist-packages/celery/canvas.py", line 207, in apply_async
    _apply = self._apply_async
  File "/usr/local/lib/python3.5/dist-packages/kombu/utils/objects.py", line 44, in __get__
    value = obj.__dict__[self.__name__] = self.__get(obj)
  File "/usr/local/lib/python3.5/dist-packages/celery/canvas.py", line 487, in _apply_async
    return self.type.apply_async
AttributeError: 'list' object has no attribute 'apply_async'

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions

      0