summaryrefslogtreecommitdiff
path: root/apscheduler
diff options
context:
space:
mode:
authorAlex Grönholm <alex.gronholm@nextday.fi>2018-08-10 11:20:47 +0300
committerAlex Grönholm <alex.gronholm@nextday.fi>2018-08-10 11:21:21 +0300
commit3923b293e42c4f19dd370f400f077ce44847dc64 (patch)
tree04cc1f0de2c46f1cc01e5290e43788a5eb4d7ca7 /apscheduler
parent18b50d9ee9ff14e816b557e34d7d3abc861d57e5 (diff)
downloadapscheduler-3923b293e42c4f19dd370f400f077ce44847dc64.tar.gz
Fixed scheduling of bound methods on persistent job stores
Fixes #326.
Diffstat (limited to 'apscheduler')
-rw-r--r--apscheduler/job.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/apscheduler/job.py b/apscheduler/job.py
index b9c305d..33081b2 100644
--- a/apscheduler/job.py
+++ b/apscheduler/job.py
@@ -1,4 +1,5 @@
from collections import Iterable, Mapping
+from inspect import ismethod
from uuid import uuid4
import six
@@ -235,13 +236,19 @@ class Job(object):
'be determined. Consider giving a textual reference (module:function name) '
'instead.' % (self.func,))
+ # Bound methods cannot survive serialization as-is, so store the "self" argument explicitly
+ if ismethod(self.func):
+ args = (self.func.__self__,) + tuple(self.args)
+ else:
+ args = self.args
+
return {
'version': 1,
'id': self.id,
'func': self.func_ref,
'trigger': self.trigger,
'executor': self.executor,
- 'args': self.args,
+ 'args': args,
'kwargs': self.kwargs,
'name': self.name,
'misfire_grace_time': self.misfire_grace_time,