芹菜对象编辑最佳实践

2024-10-03 17:28:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个芹菜任务,它对对象属性执行操作并保存它。假设我们正在计算一个人的体重指数。我们取一个人的身高和体重,计算bmi,然后把它保存在person.bmi。在Rails的DelayedJob中,您只需创建一个实例方法:

Class Person

    def compute_bmi()
        self.bmi = (self.weight / self.height) * 703
        self.save

person.delay.compute_bmi()

但是在python中,芹菜的任务通常看起来是分开的任务.py无法访问实例、类或数据库会话。用上述方法写芹菜任务是不好的做法吗?你知道吗

我的问题是,我可能必须对几百万条记录执行此操作,因此向任务发送用户数据的json有效负载并返回bmi基本上是毫无意义的,因为db read/write的负载是任务中最大的部分之一。你知道吗

这样做似乎在ironmq的ironworker这样的服务中是不可能的,我唯一能想到的将其放到云中的方法就是启动一个ec2/vps实例。你知道吗


Tags: 对象实例方法self属性指数classperson
1条回答
网友
1楼 · 发布于 2024-10-03 17:28:59

是的,通常您希望创建一个任务,该任务接受一个人的id,检索它,然后执行请求的操作。我假设您使用的是Django,因为这与Python中的Rails最接近。你知道吗

例如:

@app.task
def determine_bmi(person_id):
    person = Person.objects.get(pk=person_id)
    person.compute_bmi()

这是芹菜文档中关于First Steps with Django的部分。你知道吗

相关问题 更多 >