Skip to content

Commit

Permalink
Merge pull request #4 from bmathieu33/fix_job_modules
Browse files Browse the repository at this point in the history
Get bs_module from sys.modules, not directly from `__import__`()
  • Loading branch information
jonasvp committed Nov 4, 2011
2 parents a9f6be7 + a89419f commit 6173a4c
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 5 deletions.
10 changes: 8 additions & 2 deletions django_beanstalkd/decorators.py
Original file line number Original file line Diff line number Diff line change
@@ -1,13 +1,18 @@
# -*- coding: utf-8 -*-
import sys

class beanstalk_job(object): class beanstalk_job(object):
""" """
Decorator marking a function inside some_app/beanstalk_jobs.py as a Decorator marking a function inside some_app/beanstalk_jobs.py as a
beanstalk job beanstalk job
""" """


def __init__(self, f): def __init__(self, f):
modname = f.__module__
self.f = f self.f = f
self.__name__ = f.__name__ self.__name__ = f.__name__

self.__module__ = modname

# determine app name # determine app name
parts = f.__module__.split('.') parts = f.__module__.split('.')
if len(parts) > 1: if len(parts) > 1:
Expand All @@ -16,7 +21,8 @@ def __init__(self, f):
self.app = '' self.app = ''


# store function in per-app job list (to be picked up by a worker) # store function in per-app job list (to be picked up by a worker)
bs_module = __import__(f.__module__) __import__(modname)
bs_module = sys.modules[modname]
try: try:
if self not in bs_module.beanstalk_job_list: if self not in bs_module.beanstalk_job_list:
bs_module.beanstalk_job_list.append(self) bs_module.beanstalk_job_list.append(self)
Expand Down
8 changes: 5 additions & 3 deletions django_beanstalkd/management/commands/beanstalk_worker.py
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -33,7 +33,9 @@ def handle_noargs(self, **options):
bs_modules = [] bs_modules = []
for app in settings.INSTALLED_APPS: for app in settings.INSTALLED_APPS:
try: try:
bs_modules.append(__import__("%s.beanstalk_jobs" % app)) modname = "%s.beanstalk_jobs" % app
__import__(modname)
bs_modules.append(sys.modules[modname])
except ImportError: except ImportError:
pass pass
if not bs_modules: if not bs_modules:
Expand Down Expand Up @@ -108,7 +110,7 @@ def work(self):
for job in self.jobs.keys(): for job in self.jobs.keys():
beanstalk.watch(job) beanstalk.watch(job)
beanstalk.ignore('default') beanstalk.ignore('default')

try: try:
while True: while True:
job = beanstalk.reserve() job = beanstalk.reserve()
Expand All @@ -133,6 +135,6 @@ def work(self):
job.delete() job.delete()
else: else:
job.release() job.release()

except KeyboardInterrupt: except KeyboardInterrupt:
sys.exit(0) sys.exit(0)

0 comments on commit 6173a4c

Please sign in to comment.