2017-02-23 23 views
1

Теперь у меня есть некоторые большие задачи, и все они сделаны из небольших задач, я помещал их в брокера, и когда все мелкие задачи одной большой задачи завершены, я потребуется обратный вызов, чтобы иметь дело с результатами этих маленьких задач я знаю сельдерей имею примитивный аккорд может сделать это, если только у меня есть одна большая задача, но у меня есть много так, если я пишу, как:как вызвать обратный вызов в сельдерее, но не блокировать процесс

chord([task11.s(),task12.s()])(mycallback.s()).get() 
chord([task21.s(),task22.s()])(mycallback.s()).get() 

вторая строка не начнется до тех пор, пока первая строка не будет завершена, но таким образом некоторые работники будут долгое время кумиром, что не очень хорошо, , так что есть некоторые способы в сельдерее, которые могут обратного вызова при определенных условиях происходит, но не блокировать процесс?

====================================================================================================================================

apply_async работает! @Gigapalmer, спасибо за помощь

+0

Мне непонятно, что вы можете распараллелить, а что нет. – MKesper

+0

например, у меня есть список имени пользователя и множество сайтов, я хочу проверить, что имя пользователя зарегистрировано на этих сайтах, а затем использовать функцию обратного вызова, чтобы сделать некоторые статистические данные этих результатов, теперь я могу использовать аккорд для распараллеливайте функцию проверки каждого веб-сайта, если я просто введите одно имя пользователя, но есть много usernams, , если я напишу код, как раньше, второе имя пользователя не запустится до первого, если закончится, но так как какой-то сайт уже закончен для первого, я хочу использовать рабочего для второго – Tarjintor

+1

Я использовал сельдерей некоторое время назад, 'get()' синхронно и 'apply_async()' является асинхронным. – Gigapalmer

ответ

1

Попробуйте связывающие методы асинхронной так, что, когда один заканчивает вы называете следующую в цепи с apply_async и необходимые параметры, которые будут технически создать новую работу (если быть в другой очереди).