【发布时间】:2014-04-12 17:48:50
【问题描述】:
我在一个在线游戏中使用 Celery 和 Django。用户建造各种类型的船,并设置任务在一定时间后交付。
举个例子:
def buildfighter(world, amount):
world.shipyardsinuse = F('shipyardsinuse') + 1*amount
world.save()
newtask.buildfighter.apply_async(args=(world.worldid,amount), eta=outcometime)
还有我的实际任务代码,将在 1 小时后执行:
def buildfighter(worldno, amount):
world = World.objects.get(worldid=worldno)
world.fighters = F('fighters') + amount
world.shipyardsinuse = F('shipyardsinuse') - 1*amount
world.save()
任务交付这艘船并解放造船厂。
我不断收到偶尔的用户报告,称他们在 eta 后遇到了造船厂受阻和船只丢失的情况,而我终其一生都无法弄清楚原因!我已经设置了 celerycam,当我回去检查那些丢失的任务时,它们都显示为SUCCEEDED。
我的 settings.py 中的芹菜部分:
import djcelery
djcelery.setup_loader()
BROKER_URL = "amqp://guest:guest@localhost:5672//"
CELERY_IMPORTS = ("wawmembers.tasks", )
CELERY_RESULT_BACKEND='djcelery.backends.database:DatabaseBackend'
CELERY_TASK_RESULT_EXPIRES = 14400
CELERY_DISABLE_RATE_LIMITS = True
谁能帮忙?
【问题讨论】:
标签: python django celery django-celery