Merge pull request #1411 from vlegoff/fixdelay
Fix a bug in the permanent delay when the object is destroyed
This commit is contained in:
commit
74869726b2
1 changed files with 8 additions and 0 deletions
|
|
@ -39,6 +39,7 @@ class TaskHandler(object):
|
||||||
It populates `self.tasks` according to the ServerConfig.
|
It populates `self.tasks` according to the ServerConfig.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
to_save = False
|
||||||
value = ServerConfig.objects.conf("delayed_tasks", default={})
|
value = ServerConfig.objects.conf("delayed_tasks", default={})
|
||||||
if isinstance(value, basestring):
|
if isinstance(value, basestring):
|
||||||
tasks = dbunserialize(value)
|
tasks = dbunserialize(value)
|
||||||
|
|
@ -51,9 +52,16 @@ class TaskHandler(object):
|
||||||
if isinstance(callback, tuple):
|
if isinstance(callback, tuple):
|
||||||
# `callback` can be an object and name for instance methods
|
# `callback` can be an object and name for instance methods
|
||||||
obj, method = callback
|
obj, method = callback
|
||||||
|
if obj is None:
|
||||||
|
to_save = True
|
||||||
|
continue
|
||||||
|
|
||||||
callback = getattr(obj, method)
|
callback = getattr(obj, method)
|
||||||
self.tasks[task_id] = (date, callback, args, kwargs)
|
self.tasks[task_id] = (date, callback, args, kwargs)
|
||||||
|
|
||||||
|
if to_save:
|
||||||
|
self.save()
|
||||||
|
|
||||||
def save(self):
|
def save(self):
|
||||||
"""Save the tasks in ServerConfig."""
|
"""Save the tasks in ServerConfig."""
|
||||||
for task_id, (date, callback, args, kwargs) in self.tasks.items():
|
for task_id, (date, callback, args, kwargs) in self.tasks.items():
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue