Skip to content

Commit a346a39

Browse files
committed
first start at having an extendable package in pyres
1 parent 1cf7a1d commit a346a39

File tree

2 files changed

+95
-0
lines changed

2 files changed

+95
-0
lines changed

pyres/__init__.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,41 @@ def str_to_class(s):
6363
except ImportError:
6464
return None
6565

66+
def _load_extensions(package_name='pyresext'):
67+
"""Loads modules from the pyresext."""
68+
import pkgutil
69+
package = __import__(package_name,globals(), locals())
70+
_modules = []
71+
for importer, modname, ispkg in pkgutil.walk_packages(path=package.__path__, onerror=lambda x: None):
72+
_module = getattr(package, modname)
73+
_modules.append(_module)
74+
75+
def _load_before_job(mod):
76+
func = getattr(mod,'before_job', None)
77+
if func:
78+
return func
79+
def _load_after_job(mod):
80+
func = getattr(mod,'after_job', None)
81+
if func:
82+
return func
83+
84+
def _load_before_fork(mod):
85+
func = getattr(mod,'before_fork', None)
86+
if func:
87+
return func
88+
89+
def _load_after_fork(mod):
90+
func = getattr(mod,'after_fork', None)
91+
if func:
92+
return func
93+
_before_jobs = map(_load_before_job, _modules)
94+
_after_jobs = map(_load_after_job, _modules)
95+
_before_forks = map(_load_before_fork, _modules)
96+
_after_forks = map(_load_after_fork, _modules)
97+
return _before_jobs, _after_jobs, _before_forks, _after_forks
98+
99+
_before_jobs, _after_jobs, _before_forks, _after_forks = _load_extensions()
100+
66101
class ResQ(object):
67102
"""The ResQ class defines the Redis server object to which we will
68103
enqueue jobs into various queues.

pyres/ext.py

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
import pkgutil
2+
import pyresext
3+
4+
def simple_extensions():
5+
extension_modules = [name for _, name, _ in pkgutil.iter_modules([pyresext.__name__])]
6+
def _load_before_job(mod):
7+
func = getattr(mod,'before_job', None)
8+
if func:
9+
return func
10+
def _load_after_job(mod):
11+
func = getattr(mod,'after_job', None)
12+
if func:
13+
return func
14+
15+
def _load_before_fork(mod):
16+
func = getattr(mod,'before_fork', None)
17+
if func:
18+
return func
19+
20+
def _load_after_fork(mod):
21+
func = getattr(mod,'after_fork', None)
22+
if func:
23+
return func
24+
25+
26+
def _load_extensions(package_name='pyresext'):
27+
"""Loads modules from the pyresext."""
28+
import pkgutil
29+
package = __import__(package_name,globals(), locals())
30+
_modules = []
31+
for importer, modname, ispkg in pkgutil.walk_packages(path=package.__path__, onerror=lambda x: None):
32+
_module = getattr(package, modname)
33+
_modules.append(_module)
34+
35+
def _load_before_job(mod):
36+
func = getattr(mod,'before_job', None)
37+
if func:
38+
return func
39+
def _load_after_job(mod):
40+
func = getattr(mod,'after_job', None)
41+
if func:
42+
return func
43+
44+
def _load_before_fork(mod):
45+
func = getattr(mod,'before_fork', None)
46+
if func:
47+
return func
48+
49+
def _load_after_fork(mod):
50+
func = getattr(mod,'after_fork', None)
51+
if func:
52+
return func
53+
_before_jobs = map(_load_before_job, _modules)
54+
_after_jobs = map(_load_after_job, _modules)
55+
_before_forks = map(_load_before_fork, _modules)
56+
_after_forks = map(_load_after_fork, _modules)
57+
return _before_jobs, _after_jobs, _before_forks, _after_forks
58+
59+
_before_jobs, _after_jobs, _before_forks, _after_forks = _load_extensions()
60+

0 commit comments

Comments
 (0)