Pull to refresh

Comments 27

Так бекенд — mongodb в примере.
Ага, как-то пропустил. Это несомненно круто.
Спасибо.
А в чем заключается распределенность очереди заданий? Пока что я вижу централизованный учет и раздачу их.
Распределенность в плане выполнения заданий, то есть они делятся между запущенными воркерами, однако если вы хотите чтобы раздача заданий была отказоустойчивой, есть смысл использовать RabbitMQ
Не флейму для, а интереса ради, а gearman.org/ не рассматривали? Вроде как значительно более стабильный и проверенный вариант
Нет, не рассматривали. В будущем планируем перевести раздачу очередей на AMQP(RabbitMQ), а это тоже промышленное решение.
Instagram перешел с gearmand на celery.
Мы, кстати, у себя гирман используем очень и очень много где и тоже подумываем переходить, привысоких нагрузках гирман начинает подтупливать, а именно выполняя одну очередь, забивает на другие полностью, и даже приоритеты задач не помогают.
оффтопик:
интересно, сколько человек тянут такой проект?
это я про конструктор сайтов
Четыре программиста или админ, дизайнер, программист, менеджер?
всего 4, так что второе.
Есть ли математические применения этой штуки? Например, если у меня есть кластер и суперкомпьютер, могу я что-то для себя сложное на ней посчитать?
В принципе почему бы нет, вопрос в том что это даст в плане выигрыша в производительности. Надо смотреть особенности задачи.
> delayed_function.apply_async(args=[id], countdown=300) # Будет запущена через 300 секунд

как-нибудь проверить можно, есть ли данное задание в очереди на выполнение? отменить его можно?
Да, можно:
r = delayed_function.apply_async(args=[id], countdown=300)
r.status — Если PENDING, значит еще ждет

Отменить можно:
celery.task.control.revoke(task_id, destination=None, **kwargs)
Могли поюзать tailable cursors в MongoDB для очередей =) Было прикольнее чем RabbitMQ.
Переменную r можно прогнать через cPickle, положить значение в кеш и аяксом опрашивать статус задания.

Ой-ой-ой-ой!.. не надо такие опасности советовать людям! Уточняйте четко, что значение cPickle надо хранить только на стороне сервера, а опрашивать аяксом только по какому-нибудь связному идентификатору, а то ведь люди будут передавать клиенту результат cPickle и по нему опрашивать. А там:

docs.python.org/library/pickle.html
Да, конечно лучше в кеш только id класть, а вобще по ситуации смотреть надо.
UFO just landed and posted this here
UFO just landed and posted this here
UFO just landed and posted this here
Почему же вы не вставили в пост этот прекрасный интернет-мем? :)

image
Спасибо, но уж поздновато статью менять)
Sign up to leave a comment.