У меня есть задача celery, выполняющая операцию по атрибутам объектов и сохраняющая ее. Скажем, мы вычисляем людей bmi. Мы берем людей высоту и вес и вычисляем bmi, а затем сохраняем их на person.bmi
. В DelayedJob Rails ты бы просто сделать метод экземпляра:Рекомендации по редактированию объектов сельдерея
Class Person
def compute_bmi()
self.bmi = (self.weight/self.height) * 703
self.save
person.delay.compute_bmi()
Но питона задачи сельдерей обычно, кажется, должен быть выделен в tasks.py без доступа к примеру, класс или сессии базы данных. Плохо ли практика написания задач сельдерея, которые делают это выше?
Моя проблема заключается в том, что мне, возможно, придется сделать это на нескольких миллионах записей, поэтому отправка задачи json-полезной нагрузки пользовательских данных и возврат bmi в основном бессмысленны, так как загрузка из db read/write является одной из самые большие части работы.
Похоже, что делать это таким образом было бы невозможно с помощью таких сервисов, как ironworker Ironmq, единственный способ, которым я могу представить это в облаке, - это развернуть экземпляр ec2/vps.
Колба на самом деле. Да, как вы это сделали, я сейчас это делаю. Я получаю, что передача объекта - это плохая практика, а не object_id и выполнение поиска самостоятельно. Но когда некоторые из облачных провайдеров не поддерживают такие вещи, это меня смутило. – cbron