
Используем Celery+RabbitMQ на Kohana 3(да и на любом php-based сайте с подключенным composer) на Debian Linux
Предисловие
Статья получилась относительной, отчасти удачной, отчасти нет. Сразу оговорюсь, использовать в PHP у меня его так и не получилось. После запуска сервера и ввиду того что я не нашел нормальной библиотеки для Celery под PHP я отказался от его использования. На момент написания статьи появились не исправленные пока Deprecated функции в библиотеках, а больше времени на эксперименты в глубине чужих библиотек у меня не было. Но, возможно кому-то она все-таки поможет.
Что такое Celery(Сельдерей)
Со слов статьи на хабре
Это распределенная асинхронная очередь заданий, которая обладает широким функционалом.
И так, что же умеет Celery:
- Выполнять задания асинхронно или синхронно
- Выполнять периодические задания(умная замена crond)
- Выполнять отложенные задания
- Распределенное выполнение (может быть запущен на N серверах)
- В пределах одного worker'а возможно конкурентное выполнение нескольких задач(одновременно)
- Выполнять задание повторно, если вылез exception
- Ограничивать количество заданий в единицу времени(rate limit, для задания или глобально)
- Routing заданий(какому worker'у что делать)
- Несложно мониторить выполнение заданий
- Выполнять подзадания
- Присылать отчеты об exception'ах на email
- Проверять выполнилось ли задание(удобно для построения Ajax приложений, где юзер ждет факта завершения)