diff options
author | Alex Grönholm <alex.gronholm@nextday.fi> | 2018-08-10 11:20:47 +0300 |
---|---|---|
committer | Alex Grönholm <alex.gronholm@nextday.fi> | 2018-08-10 11:21:21 +0300 |
commit | 3923b293e42c4f19dd370f400f077ce44847dc64 (patch) | |
tree | 04cc1f0de2c46f1cc01e5290e43788a5eb4d7ca7 /apscheduler | |
parent | 18b50d9ee9ff14e816b557e34d7d3abc861d57e5 (diff) | |
download | apscheduler-3923b293e42c4f19dd370f400f077ce44847dc64.tar.gz |
Fixed scheduling of bound methods on persistent job stores
Fixes #326.
Diffstat (limited to 'apscheduler')
-rw-r--r-- | apscheduler/job.py | 9 |
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, |