Сельдерейская группа цепочек перестает реагировать - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь создать группу цепочек, и когда группа исполняется, она просто останавливается и зависает, очень похоже на тупик.

Я проверил rabbitmq и resultbackend, и они работают нормально.

вот мои фиктивные задания для воспроизведения:

from pprint import pprint
from time import sleep


@app.task
def a(i):
    result = 'A %s' % i
    sleep((i%3)/ 10.0)
    pprint(result)
    return result


@app.task
def b(self,i):
    result = 'B %s' % i
    sleep((i%3)/  10.0)
    pprint(result)
    return result

@app.task
def c(self,i):
    result = 'C %s' % i
    sleep((i%3)/  10.0)
    pprint(result)
    return result

, и я называю их так:

        chains = [chain(a.s(i), b.s(i), c.s(i)) for i in range(100)]
        g = group(*chains)


        result = g.apply_async()

и мои настройки таковы:

# Sensible settings for celery
CELERY_ALWAYS_EAGER = False
CELERY_ACKS_LATE = True
CELERY_TASK_PUBLISH_RETRY = True
CELERY_DISABLE_RATE_LIMITS = False
CELERY_IGNORE_RESULT = False
CELERY_SEND_TASK_ERROR_EMAILS = False
CELERY_TASK_RESULT_EXPIRES = 600
CELERY_REDIS_MAX_CONNECTIONS = 2048
CELERY_TASK_SERIALIZER = "pickle"
CELERY_RESULT_SERIALIZER = "pickle"
CELERY_ACCEPT_CONTENT = ["pickle"]

# CELERY_TASK_SERIALIZER = "json"
# CELERY_ACCEPT_CONTENT = ['application/json']

CELERYD_HIJACK_ROOT_LOGGER = False
CELERYD_PREFETCH_MULTIPLIER = 1
CELERYD_MAX_TASKS_PER_CHILD = 1000

Я думаю, что где-то происходит тупик, потому что то, что происходит, имеет свои симптомы, и никаких ошибок не возникает.Версия сельдерея - 4.1.0.

Что также странно, так это то, что когда я включаю CELERY_ALWAYS_EAGER в значение True, все работает просто отлично, но работает локально, что, конечно, не то, что я хочу.Любая помощь очень ценится, борется с этим уже несколько дней.

...