mirror of
https://github.com/django-q2/django-q2.git
synced 2026-09-27 01:48:12 +08:00
Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
505eb8d537 | ||
|
|
dcfe5b6650 | ||
|
|
c3b49cca25 | ||
|
|
c1e00b09cb | ||
|
|
8e403d0136 | ||
|
|
337a5782d9 |
@@ -1,5 +1,14 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
## [v1.7.3](https://github.com/django-q2/django-q2/tree/v1.7.3) (2024-10-15)
|
||||||
|
|
||||||
|
- Catch missing SEGALRM with AttributeError instead of ValueError https://github.com/django-q2/django-q2/pull/223
|
||||||
|
- Refactor timeout handling to handle AttributeError and ValueError for Windows users https://github.com/django-q2/django-q2/pull/234
|
||||||
|
- Fix type check for args in scheduler.py E721 https://github.com/django-q2/django-q2/pull/233
|
||||||
|
- Only trigger prometheus if configured https://github.com/django-q2/django-q2/pull/231
|
||||||
|
- Fix missing ack_id when finishing task https://github.com/django-q2/django-q2/pull/224
|
||||||
|
|
||||||
|
|
||||||
## [v1.7.2](https://github.com/django-q2/django-q2/tree/v1.7.2) (2024-09-09)
|
## [v1.7.2](https://github.com/django-q2/django-q2/tree/v1.7.2) (2024-09-09)
|
||||||
|
|
||||||
- Fix twine check
|
- Fix twine check
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
import django
|
import django
|
||||||
|
|
||||||
VERSION = (1, 7, 2)
|
VERSION = (1, 7, 3)
|
||||||
|
|
||||||
if django.VERSION < (3, 2):
|
if django.VERSION < (3, 2):
|
||||||
default_app_config = "django_q.apps.DjangoQConfig"
|
default_app_config = "django_q.apps.DjangoQConfig"
|
||||||
|
|||||||
+8
-1
@@ -1,4 +1,5 @@
|
|||||||
# Standard
|
# Standard
|
||||||
|
import os
|
||||||
import signal
|
import signal
|
||||||
import socket
|
import socket
|
||||||
import uuid
|
import uuid
|
||||||
@@ -230,8 +231,14 @@ class Sentinel:
|
|||||||
% {"name": process.name}
|
% {"name": process.name}
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
if prometheus_multiprocess:
|
# check if prometheus is proper configurated
|
||||||
|
prometheus_path = os.getenv(
|
||||||
|
"PROMETHEUS_MULTIPROC_DIR", os.getenv("prometheus_multiproc_dir")
|
||||||
|
)
|
||||||
|
|
||||||
|
if prometheus_multiprocess and prometheus_path:
|
||||||
prometheus_multiprocess.mark_process_dead(process.pid)
|
prometheus_multiprocess.mark_process_dead(process.pid)
|
||||||
|
|
||||||
self.pool.remove(process)
|
self.pool.remove(process)
|
||||||
self.spawn_worker()
|
self.spawn_worker()
|
||||||
if process.timer.value == 0:
|
if process.timer.value == 0:
|
||||||
|
|||||||
+5
-1
@@ -145,7 +145,11 @@ def save_task(task, broker: Broker):
|
|||||||
attempt_count=1,
|
attempt_count=1,
|
||||||
)
|
)
|
||||||
|
|
||||||
if Conf.MAX_ATTEMPTS > 0 and task_obj.attempt_count >= Conf.MAX_ATTEMPTS:
|
if (
|
||||||
|
Conf.MAX_ATTEMPTS > 0
|
||||||
|
and task_obj.attempt_count >= Conf.MAX_ATTEMPTS
|
||||||
|
and task.get("ack_id")
|
||||||
|
):
|
||||||
broker.acknowledge(task["ack_id"])
|
broker.acknowledge(task["ack_id"])
|
||||||
|
|
||||||
except Exception:
|
except Exception:
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ def scheduler(broker: Broker = None):
|
|||||||
if s.args:
|
if s.args:
|
||||||
args = ast.literal_eval(s.args)
|
args = ast.literal_eval(s.args)
|
||||||
# single value won't eval to tuple, so:
|
# single value won't eval to tuple, so:
|
||||||
if type(args) != tuple:
|
if type(args) is not tuple:
|
||||||
args = (args,)
|
args = (args,)
|
||||||
q_options = kwargs.get("q_options", {})
|
q_options = kwargs.get("q_options", {})
|
||||||
if s.intended_date_kwarg:
|
if s.intended_date_kwarg:
|
||||||
|
|||||||
+9
-4
@@ -22,11 +22,13 @@ class TimeoutHandler:
|
|||||||
return
|
return
|
||||||
try:
|
try:
|
||||||
signal.signal(signal.SIGALRM, self.raise_timeout_exception)
|
signal.signal(signal.SIGALRM, self.raise_timeout_exception)
|
||||||
except ValueError: # ValueError is raised for Windows users
|
signal.alarm(self._timeout)
|
||||||
|
except (
|
||||||
|
ValueError,
|
||||||
|
AttributeError,
|
||||||
|
): # AttributeError or ValueError might be raised for Windows users
|
||||||
logger.debug(_("SIGALARM is not available on your platform"))
|
logger.debug(_("SIGALARM is not available on your platform"))
|
||||||
|
|
||||||
signal.alarm(self._timeout)
|
|
||||||
|
|
||||||
def __exit__(self, exc_type, exc_value, traceback):
|
def __exit__(self, exc_type, exc_value, traceback):
|
||||||
if self._timeout == -1:
|
if self._timeout == -1:
|
||||||
return
|
return
|
||||||
@@ -34,5 +36,8 @@ class TimeoutHandler:
|
|||||||
try:
|
try:
|
||||||
signal.alarm(0)
|
signal.alarm(0)
|
||||||
signal.signal(signal.SIGALRM, signal.SIG_DFL)
|
signal.signal(signal.SIGALRM, signal.SIG_DFL)
|
||||||
except ValueError: # ValueError is raised for Windows users
|
except (
|
||||||
|
ValueError,
|
||||||
|
AttributeError,
|
||||||
|
): # AttributeError or ValueError might be raised for Windows users
|
||||||
logger.debug(_("SIGALARM is not available on your platform"))
|
logger.debug(_("SIGALARM is not available on your platform"))
|
||||||
|
|||||||
+1
-1
@@ -75,7 +75,7 @@ author = "Ilan Steemers, Stan Triepels"
|
|||||||
# The short X.Y version.
|
# The short X.Y version.
|
||||||
version = "1.7"
|
version = "1.7"
|
||||||
# The full version, including alpha/beta/rc tags.
|
# The full version, including alpha/beta/rc tags.
|
||||||
release = "1.7.2"
|
release = "1.7.3"
|
||||||
|
|
||||||
# The language for content autogenerated by Sphinx. Refer to documentation
|
# The language for content autogenerated by Sphinx. Refer to documentation
|
||||||
# for a list of supported languages.
|
# for a list of supported languages.
|
||||||
|
|||||||
+1
-1
@@ -4,7 +4,7 @@ build-backend = "poetry.core.masonry.api"
|
|||||||
|
|
||||||
[tool.poetry]
|
[tool.poetry]
|
||||||
name = "django-q2"
|
name = "django-q2"
|
||||||
version = "1.7.2"
|
version = "1.7.3"
|
||||||
packages = [
|
packages = [
|
||||||
{ include = "django_q" },
|
{ include = "django_q" },
|
||||||
]
|
]
|
||||||
|
|||||||
Reference in New Issue
Block a user