Утечка памяти Celery в Django — рабочая память продолжает увеличиваться и не освобождается после завершения задачPython

Программы на Python
Ответить
Anonymous
 Утечка памяти Celery в Django — рабочая память продолжает увеличиваться и не освобождается после завершения задач

Сообщение Anonymous »

Я использую Django + Celery для задач сканирования данных, но использование памяти рабочим инструментом Celery со временем увеличивается и никогда не снижается после завершения каждой задачи.
Я использую:

Код: Выделить всё

    celery==5.5.3
Django==5.2.6
Вот моя конфигурация Celery:

Код: Выделить всё

# ---------- Broker/Backend ----------
app.conf.broker_url = "sqs://"
app.conf.result_backend = "rpc://"
app.conf.task_ignore_result = True

# \---------- Queue (FIFO) ----------

QUEUE_NAME = env("AWS_SQS_CELERY_NAME")
app.conf.task_default_queue = QUEUE_NAME
app.conf.task_queues = (Queue(QUEUE_NAME),)

# \---------- SQS transport ----------

app.conf.broker_transport_options = {
"region": env.str("AWS_REGION"),
"predefined_queues": {
QUEUE_NAME: {
"url": env.str("AWS_CELERY_SQS_URL"),
"access_key_id": env.str("AWS_ACCESS_KEY_ID"),
"secret_access_key": env.str("AWS_SECRET_ACCESS_KEY"),
},
},
# long-poll
"wait_time_seconds": int(env("SQS_WAIT_TIME_SECONDS", default=10)),
"polling_interval": float(env("SQS_POLLING_INTERVAL", default=0)),
"visibility_timeout": int(env("SQS_VISIBILITY_TIMEOUT", default=900)),
"create_missing_queues": False, # do not create queue automatically
}

# \---------- Worker behavior ----------

app.conf.worker_prefetch_multiplier = 1   # process one job at a time
app.conf.task_acks_late = True            # ack after task completion
app.conf.task_time_limit = int(env("CELERY_HARD_TIME_LIMIT", default=900))
app.conf.task_soft_time_limit = int(env("CELERY_SOFT_TIME_LIMIT", default=600))
app.conf.worker_send_task_events = False
app.conf.task_send_sent_event = False
app.autodiscover_tasks()
Изображение
Проблема:
После завершения каждой задачи сканирования объем рабочей памяти не уменьшается, а лишь постепенно увеличивается.
Перезапуск рабочего процесса Celery освобождает память, поэтому я считаю, что это утечка или очистка. проблема.
Что я пробовал:
  • Установить Task_ignore_result=True
  • Добавить параметр --max-tasks-per-child=200


Подробнее здесь: https://stackoverflow.com/questions/797 ... released-a
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»