# 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