# models.py
from django.db import models
class Person(models.Model):
first_name = models.CharField(max_length=30)
last_name = models.CharField(max_length=30)
text_blob = models.CharField(max_length=50000)
# tasks.py
import celery
@celery.task
def my_task(person):
# example operation: does something to person
# needs only a few of the attributes of person
# and not the entire bulky record
person.first_name = person.first_name.title()
person.last_name = person.last_name.title()
person.save()
在我的应用程序的地方我有类似:应该将django模型对象实例传递给芹菜?
from models import Person
from tasks import my_task
import celery
g = celery.group([my_task.s(p) for p in Person.objects.all()])
g.apply_async()
- 芹菜泡菜p来将其发送到工人的权利?
- 如果工作人员在多台机器上运行,整个人是否会通过网络传输对象(连同主要不需要的庞大text_blob)?有没有办法避免它?
如何将人员记录有效均匀地分配给多台机器上运行的员工?
这可能是一个更好的主意吗?如果Person有几百万条记录,它不会压倒数据库吗?
# tasks.py import celery from models import Person @celery.task def my_task(person_pk): # example operation that does not need text_blob person = Person.objects.get(pk=person_pk) person.first_name = person.first_name.title() person.last_name = person.last_name.title() person.save() #In my application somewhere from models import Person from tasks import my_task import celery g = celery.group([my_task.s(p.pk) for p in Person.objects.all()]) g.apply_async()
使用任务延迟,并把它的计时器 – catherine 2013-02-26 00:43:29
@catherine计时器如何帮助我在这种情况下? – 2013-02-26 00:52:25
对不起,这个计时器我的错误,这只是任务延迟。当这个人拥有数百万条记录时,芹菜会延迟任务并通过逐一发送 – catherine 2013-02-26 00:57:05