Я запускаю сервер сельдерея, у которого есть 5,6 задача для запуска периодически. Сельдерей занимает слишком много памяти после 5,6 дней непрерывного исполнения.Python Django Celery занимает слишком много памяти
Документация на сельдерей очень запутанна. Я использую следующие настройки.
# celeryconfig.py
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'xxx.settings'
# default RabbitMQ broker
BROKER_URL = "amqp://guest:[email protected]:5672//"
from celery.schedules import crontab
# default RabbitMQ backend
CELERY_RESULT_BACKEND = None
#4 CONCURRENT proccesess are running.
CELERYD_CONCURRENCY = 4
# specify location of log files
CELERYD_LOG_FILE="/var/log/celery/celery.log"
CELERY_ALWAYS_EAGER = True
CELERY_IMPORTS = (
'xxx.celerydir.cron_tasks.deprov_cron_script',
)
CELERYBEAT_SCHEDULE = {
'deprov_cron_script': {
'task': 'xxx.celerydir.cron_tasks.deprov_cron_script.check_deprovision_vms',
'schedule': crontab(minute=0, hour=17),
'args': ''
}
}
Я использую службу сельдерея, используя команду nohup (это будет работать в фоновом режиме).
nohup celery beat -A xxx.celerydir &
Сколько стоит? это нормально для каждого работника сельдерея, чтобы взять около ~ 150 мб в ОЗУ –
, он занимал 80% для 2 ГБ оперативной памяти (через 5,6 дня). –
Это может быть утечка памяти в вашей программе Python/Django. Использует ли ваша программа какие-либо крупные списки или словари? Является ли он только Python или имеет какие-либо модули, написанные на C? –