summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBar Harel <bzvi7919@gmail.com>2021-01-11 01:21:21 +0200
committerGitHub <noreply@github.com>2021-01-11 01:21:21 +0200
commit341a25d2f870c3e681ce4f0cc85ee275d77f9ddc (patch)
treedd8b10ede68d36f9d432c168da859c280cd548a0
parent2885632e318be6a0fef25f8fddaeedc30d6ff157 (diff)
downloadapscheduler-341a25d2f870c3e681ce4f0cc85ee275d77f9ddc.tar.gz
Allow Job to be weak-referenced (#470)
-rw-r--r--apscheduler/job.py2
-rw-r--r--tests/test_job.py10
2 files changed, 11 insertions, 1 deletions
diff --git a/apscheduler/job.py b/apscheduler/job.py
index 5c1b75d..7d609fa 100644
--- a/apscheduler/job.py
+++ b/apscheduler/job.py
@@ -40,7 +40,7 @@ class Job(object):
__slots__ = ('_scheduler', '_jobstore_alias', 'id', 'trigger', 'executor', 'func', 'func_ref',
'args', 'kwargs', 'name', 'misfire_grace_time', 'coalesce', 'max_instances',
- 'next_run_time')
+ 'next_run_time', '__weakref__')
def __init__(self, scheduler, id=None, **kwargs):
super(Job, self).__init__()
diff --git a/tests/test_job.py b/tests/test_job.py
index 9dc9210..9405554 100644
--- a/tests/test_job.py
+++ b/tests/test_job.py
@@ -1,4 +1,6 @@
# coding: utf-8
+import gc
+import weakref
from datetime import datetime, timedelta
from functools import partial
@@ -64,6 +66,14 @@ def test_remove(job):
job._scheduler.remove_job.assert_called_once_with(job.id, None)
+def test_weakref(create_job):
+ job = create_job(func=dummyfunc)
+ ref = weakref.ref(job)
+ del job
+ gc.collect()
+ assert ref() is None
+
+
def test_pending(job):
"""
Tests that the "pending" property return True when _jobstore_alias is a string, ``False``