mirror of
https://github.com/django-q2/django-q2.git
synced 2026-09-27 00:08:12 +08:00
Allow for platforms not supporting resource module
This commit is contained in:
@@ -10,3 +10,8 @@ try:
|
||||
from croniter import croniter
|
||||
except ImportError:
|
||||
croniter = None
|
||||
|
||||
try:
|
||||
import resource
|
||||
except ModuleNotFoundError:
|
||||
resource = None
|
||||
|
||||
+6
-3
@@ -1,7 +1,6 @@
|
||||
# Standard
|
||||
import ast
|
||||
import importlib
|
||||
import resource
|
||||
import signal
|
||||
import socket
|
||||
import traceback
|
||||
@@ -28,7 +27,7 @@ from django_q.queues import Queue
|
||||
from django_q.signals import pre_execute
|
||||
from django_q.signing import SignedPackage, BadSignature
|
||||
from django_q.status import Stat, Status
|
||||
from django_q import croniter
|
||||
from django_q import croniter, resource
|
||||
|
||||
|
||||
class Cluster:
|
||||
@@ -435,7 +434,11 @@ def worker(
|
||||
result_queue.put(task)
|
||||
timer.value = -1 # Idle
|
||||
# Recycle
|
||||
if task_count == Conf.RECYCLE or (Conf.MAX_RSS and resource.getrusage(resource.RUSAGE_SELF).ru_maxrss >= Conf.MAX_RSS):
|
||||
if task_count == Conf.RECYCLE or (
|
||||
resource
|
||||
and Conf.MAX_RSS
|
||||
and resource.getrusage(resource.RUSAGE_SELF).ru_maxrss >= Conf.MAX_RSS
|
||||
):
|
||||
timer.value = -2 # Recycled
|
||||
break
|
||||
logger.info(_(f"{name} stopped doing work"))
|
||||
|
||||
+3
-2
@@ -104,7 +104,8 @@ class Conf:
|
||||
# Number of tasks each worker can handle before it gets recycled. Useful for releasing memory
|
||||
RECYCLE = conf.get("recycle", 500)
|
||||
|
||||
# The maximum resident set size in kilobytes before a worker will recycle. Useful for limiting memory usage.
|
||||
# The maximum resident set size in kilobytes before a worker will recycle. Useful for limiting memory usage
|
||||
# Not available on all platforms
|
||||
MAX_RSS = conf.get("max_rss", None)
|
||||
|
||||
# Number of seconds to wait for a worker to finish.
|
||||
@@ -214,7 +215,7 @@ if Conf.ERROR_REPORTER:
|
||||
# and instantiate an ErrorReporter using the provided config
|
||||
for name, conf in error_conf.items():
|
||||
for entry in pkg_resources.iter_entry_points(
|
||||
"djangoq.errorreporters", name
|
||||
"djangoq.errorreporters", name
|
||||
):
|
||||
Reporter = entry.load()
|
||||
reporters.append(Reporter(**conf))
|
||||
|
||||
Reference in New Issue
Block a user