在我的 django 项目中,我有以下依赖项:
- Django==1.5.4
- django-celery==3.1.9
- amqp==1.4.3
- 海带==3.0.14
- librabbitmq==1.0.3 (按照建议https://stackoverflow.com/a/17541942/1452356 https://stackoverflow.com/a/17541942/1452356)
在 dev_settings.py 中:
DEBUG = False
BROKER_URL = "django://"
import djcelery
djcelery.setup_loader()
CELERYBEAT_SCHEDULER = "djcelery.schedulers.DatabaseScheduler"
CELERYD_CONCURRENCY = 2
# CELERYD_TASK_TIME_LIMIT = 10
CELERYD_TASK_TIME_LIMIT
按照此处的建议进行评论https://stackoverflow.com/a/17561747/1452356 https://stackoverflow.com/a/17561747/1452356随着debug_toolbar
正如建议的https://stackoverflow.com/a/19931261/1452356 https://stackoverflow.com/a/19931261/1452356
我在 shell 中启动我的工作人员:
./manage.py celeryd --settings=dev_settings
然后我发送一个任务:
class ExempleTask(Task):
def run(self, piProjectId):
table = []
for i in range(50000000):
table.append(1)
return None
使用 django 命令:
class Command(BaseCommand):
def handle(self, *plArgs, **pdKwargs):
loResult = ExempleTask.delay(1)
loResult.get()
return None
With:
./manage.py purge_and_delete_test --settings=dev_settings
我通过以下方式监控内存使用情况:
watch -n 1 'ps ax -o rss,user,command | sort -nr | grep celery |head -n 5'
每次我调用该任务时,它都会增加 celeryd/worker 进程的内存消耗,与其中分配的数据量成比例......
这似乎是一个常见问题(参见其他 stackoverflow 链接),但是即使使用最新的依赖项,我也无法修复它。
Thanks.