Celery 只更新一个字段

48 阅读4分钟

我想创建一个任务来更新排名。 settings.py djcelery.setup_loader() BROKER_URL = "amqp://guest:guest@localhost:5672//" CELERY_TIMEZONE = 'UTC' 我用 django worker python manage.py celery worker --loglevel=info 任务: @celery.task def update_ranking(duck_pk, new_position): duck = Duck.objects.get(pk=duck_pk) print 'duck.rank_number="%s"' % scope.rank_number

尚未进入排名

if duck.rank_number is None: pass else:

相比于之前的排名呈上升趋势

if duck.rank_number > new_position: duck.rank_trend = True

相比于之前的排名呈下降趋势

elif duck.rank_number < new_position: duck.rank_trend = False

未发生变化,保持之前的

else: pass print 'Title: %s, Old pos: %s, New pos: %s, Trend: %s'
% (duck.title, duck.rank_number, new_position, duck.rank_trend) duck.rank_number = new_position duck.save() 视图部分: tasks = [] for new_position, duck in enumerate(Duck.objects.all().order_by('-like_number', 'pk')): tasks.append(update_ranking.s(duck.pk, new_position + 1)) group = celery.group(tasks) group.apply_async() 字段 rank_number 正确地更新了,但 rank_trend 没有!? 这可能是在某个地方的一个极小且显而易见的错误。但我已经坐了 5 个小时了,仍然一无所获。当我在没有 celery 的情况下在视图上运行该代码时,该代码可以正常工作。请帮忙。 19:30 编辑 (任务输出) [2013-07-27 20:49:20,019: 警告/PoolWorker-1] scope.rank_number="1" [2013-07-27 20:49:20,020: 警告/PoolWorker-1] 标题: 标题 16,旧:1,新 1,趋势:真 [2013-07-27 20:49:20,020: 信息/MainProcess] 从代理 دریافت任务: scope.tasks.update_ranking[dc247c1b-f6a9-4644-9834-6fc815c449af] [2013-07-27 20:49:20,028: 警告/PoolWorker-4] scope.rank_number="2" [2013-07-27 20:49:20,028: 警告/PoolWorker-4] 标题: 标题 19,旧:2,新 3,趋势:假 [2013-07-27 20:49:20,030: 警告/PoolWorker-2] scope.rank_number="3" [2013-07-27 20:49:20,030: 警告/PoolWorker-2] 标题: 在旅行前改善身体状况,旧:3,新 2,趋势:真 [2013-07-27 20:49:20,126: 信息/MainProcess] 任务 celery.group[1be41b1c-eb67-4ba9-80d6-c236aadb3074] 在 0.122579097748s 中成功:<GroupResult:... [2013-07-27 20:49:20,137: 警告/PoolWorker-3] scope.rank_number="4" [2013-07-27 20:49:20,137: 警告/PoolWorker-3] 标题: 标题 15,旧:4,新 4,趋势:假 [2013-07-27 20:49:20,160: 信息/MainProcess] 从代理 دریافت任务: scope.tasks.update_ranking[85b25c90-465f-4b2a-bc14-a6f7baf52a2f] [2013-07-27 20:49:20,189: 信息/MainProcess] 任务 scope.tasks.update_ranking[32fe744a-58df-4499-9cab-c382f42806ae] 在 0.180363893509s 中成功:无 [2013-07-27 20:49:20,199: 警告/PoolWorker-1] scope.rank_number="5" [2013-07-27 20:49:20,199: 警告/PoolWorker-1] 标题: 买车,旧:5,新 5,趋势:真 [2013-07-27 20:49:20,256: 信息/MainProcess] 任务 scope.tasks.update_ranking[bd836619-35e6-41b4-8ac8-96ed13383f5b] 在 0.241793870926s 中成功:无 [2013-07-27 20:49:20,257: 信息/MainProcess] 任务 scope.tasks.update_ranking[7c302bc6-5ec8-40a1-b8e7-e71e96de0dd9] 在 0.239971160889s 中成功:无 [2013-07-27 20:49:20,266: 警告/PoolWorker-2] scope.rank_number="6" [2013-07-27 20:49:20,266: 警告/PoolWorker-2] 标题: 标题 1,旧:6,新 6,趋势:假 [2013-07-27 20:49:20,268: 警告/PoolWorker-4] scope.rank_number="7" [2013-07-27 20:49:20,268: 警告/PoolWorker-4] 标题: 标题 18,旧:7,新 7,趋势:假 [2013-07-27 20:49:20,286: 信息/MainProcess] 从代理 دریافت任务: scope.tasks.update_ranking[c013b17d-b195-4a0e-802f-29d0396c77d9] [2013-07-27 20:49:20,287: 信息/MainProcess] 从代理 دریافت任务: scope.tasks.update_ranking[2719a228-9e9e-46e0-817f-b67e30e2b079] [2013-07-27 20:49:20,287: 信息/MainProcess] 从代理 دریافت任务: scope.tasks.update_ranking[4b75414c-229c-409b-a79d-ae8648fdead4] [2013-07-27 20:49:20,301: 信息/MainProcess] 任务 scope.tasks.update_ranking[3ee7310a-cee8-487e-9b93-ccab84d79305] 在 0.175172805786s 中成功:无 [2013-07-27 20:49:20,302: 信息/MainProcess] 从代理 دریافت任务: scope.tasks.update_ranking[1557ff8d-c336-43e0-b255-1f74def29a5e] [2013-07