Как использовать луч с задачами сельдерея?

Есть ли способ использовать луч с сельдереем. Какой исполнитель использовать. Я попробовал игрушечную реализацию и столкнулся со следующей ошибкой:

[2020-05-25 00:21:07,473: ERROR/ForkPoolWorker-5] Task mytasks.add[4a2f6fba-4f1b-4a77-95a0-0ee3c488a927] raised unexpected: AttributeError("'LoggingProxy' object has no attribute 'fileno'",)
Traceback (most recent call last):
File "/usr/local/lib/python3.5/dist-packages/celery/app/trace.py", line 382, in trace_task
R = retval = fun(*args, **kwargs)
File "/usr/local/lib/python3.5/dist-packages/celery/app/trace.py", line 641, in __protected_call__
return self.run(*args, **kwargs)
File "/home/akshay/Desktop/mytasks.py", line 15, in add
ray.init()
File "/home/akshay/.local/lib/python3.5/site-packages/ray/worker.py", line 1453, in init
driver_id=driver_id)
File "/home/akshay/.local/lib/python3.5/site-packages/ray/worker.py", line 1716, in connect
faulthandler.enable(all_threads=False)
AttributeError: 'LoggingProxy' object has no attribute 'fileno'

Реализация кода здесь:

from celery import Celery, signals
import logging
import ray
celery = Celery('tasks', broker='redis://localhost:6379/0', backend='redis://localhost')
@celery.task
def add(value):
    ray.init()
    to = remote_chain_function.remote(value)
    return to


@ray.remote
def remote_chain_function(value):
    return value + 1

person noobwithskills    schedule 24.05.2020    source источник
comment
Довольно интересно, что вы попробовали это. Вы делаете это для отправки заданий в кластер Ray с удаленного узла?   -  person Sang    schedule 25.05.2020
comment
Я думаю, вам следует сначала создать экземпляры celery и ray в одном и том же узле и просто использовать функции ray внутри задач celery без ray.init. И вы можете вызывать задачи сельдерея с удаленных узлов. Если это не сработает, можете ли вы опубликовать это в выпуске Ray github?   -  person Sang    schedule 25.05.2020
comment
Спасибо @Sang. Да, идея состоит в том, чтобы отправлять задания в лучевой кластер. Я поработаю над вашим предложением и вернусь к вам по этому поводу.   -  person noobwithskills    schedule 26.05.2020
comment
@Sang Кажется, предложенный вами обходной путь не работает. Я разместил его в выпуске GitHub.   -  person noobwithskills    schedule 26.05.2020


Ответы (1)


Вы можете избавиться от AttributeError: 'LoggingProxy' object has no attribute 'fileno', установив этот параметр:

CELERY_WORKER_REDIRECT_STDOUTS = False

https://docs.celeryproject.org/en/stable/userguide/configuration.html?highlight=REDIRECT_STDOUTS#std-setting-worker_redirect_stdouts

person keyvanm    schedule 24.03.2021