mirror of
https://github.com/django-q2/django-q2.git
synced 2026-10-09 13:08:11 +08:00
Adds max_rss memory limit for recycle
This commit is contained in:
+3
-1
@@ -1,6 +1,7 @@
|
|||||||
# Standard
|
# Standard
|
||||||
import ast
|
import ast
|
||||||
import importlib
|
import importlib
|
||||||
|
import resource
|
||||||
import signal
|
import signal
|
||||||
import socket
|
import socket
|
||||||
import traceback
|
import traceback
|
||||||
@@ -10,6 +11,7 @@ from time import sleep
|
|||||||
|
|
||||||
# External
|
# External
|
||||||
import arrow
|
import arrow
|
||||||
|
|
||||||
# Django
|
# Django
|
||||||
from django import db
|
from django import db
|
||||||
from django.conf import settings
|
from django.conf import settings
|
||||||
@@ -433,7 +435,7 @@ def worker(
|
|||||||
result_queue.put(task)
|
result_queue.put(task)
|
||||||
timer.value = -1 # Idle
|
timer.value = -1 # Idle
|
||||||
# Recycle
|
# Recycle
|
||||||
if task_count == Conf.RECYCLE:
|
if task_count == Conf.RECYCLE or (Conf.MAX_RSS and resource.getrusage(resource.RUSAGE_SELF).ru_maxrss >= Conf.MAX_RSS):
|
||||||
timer.value = -2 # Recycled
|
timer.value = -2 # Recycled
|
||||||
break
|
break
|
||||||
logger.info(_(f"{name} stopped doing work"))
|
logger.info(_(f"{name} stopped doing work"))
|
||||||
|
|||||||
@@ -104,6 +104,9 @@ class Conf:
|
|||||||
# Number of tasks each worker can handle before it gets recycled. Useful for releasing memory
|
# Number of tasks each worker can handle before it gets recycled. Useful for releasing memory
|
||||||
RECYCLE = conf.get("recycle", 500)
|
RECYCLE = conf.get("recycle", 500)
|
||||||
|
|
||||||
|
# The maximum resident set size in kilobytes before a worker will recycle. Useful for limiting memory usage.
|
||||||
|
MAX_RSS = conf.get("max_rss", None)
|
||||||
|
|
||||||
# Number of seconds to wait for a worker to finish.
|
# Number of seconds to wait for a worker to finish.
|
||||||
TIMEOUT = conf.get("timeout", None)
|
TIMEOUT = conf.get("timeout", None)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user