Skip to content

Commit e5ed810

Browse files
committed
import changed
1 parent fcd6cd9 commit e5ed810

File tree

2 files changed

+24
-2
lines changed

2 files changed

+24
-2
lines changed

src/pyres/__init__.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,28 @@
44
import simplejson
55

66
import types
7+
8+
def my_import(name):
9+
mod = __import__(name)
10+
components = name.split('.')
11+
for comp in components[1:]:
12+
mod = getattr(mod, comp)
13+
return mod
14+
15+
def safe_str_to_class(s):
16+
lst = s.split(".")
17+
klass = lst[-1]
18+
mod_list = lst[:-1]
19+
module = ".".join(mod_list)
20+
try:
21+
mod = my_import(module)
22+
if hasattr(mod, klass):
23+
return getattr(mod, klass)
24+
else:
25+
return None
26+
except ImportError:
27+
return None
28+
729
def str_to_class(s):
830
lst = s.split(".")
931
klass = lst[-1]

src/pyres/job.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from pyres import ResQ, str_to_class
1+
from pyres import ResQ, str_to_class, safe_str_to_class
22
from pyres.failure import Failure
33
class Job(object):
44
def __init__(self, queue, payload, resq, worker):
@@ -9,7 +9,7 @@ def __init__(self, queue, payload, resq, worker):
99

1010
def perform(self):
1111
payload_class_str = self._payload["class"]
12-
payload_class = str_to_class(payload_class_str)
12+
payload_class = safe_str_to_class(payload_class_str)
1313
args = self._payload.get("args", None)
1414
if args:
1515
return payload_class.perform(*args)

0 commit comments

Comments
 (0)