Skip to content

Commit

Permalink
Merge branch 'master' into job-access-within-job
Browse files Browse the repository at this point in the history
Conflicts:
	rq/job.py
  • Loading branch information
nvie committed Sep 3, 2012
2 parents fcb5453 + 8581cd6 commit 4b66d7a
Show file tree
Hide file tree
Showing 7 changed files with 49 additions and 22 deletions.
11 changes: 10 additions & 1 deletion CHANGES.md
Original file line number Diff line number Diff line change
@@ -1,9 +1,18 @@
### 0.3.2
### 0.3.3
(not released yet)

- Access the current job from within the job function (`rq.get_current_job()`).


### 0.3.2
(September 3rd, 2012)

- Fixes broken `rqinfo` command.

- Improve compatibility with Python < 2.7.



### 0.3.1
(August 30th, 2012)

Expand Down
10 changes: 4 additions & 6 deletions rq/job.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from uuid import uuid4
from cPickle import loads, dumps, UnpicklingError
from .local import LocalStack
from .connections import get_current_connection
from .connections import resolve_connection
from .exceptions import UnpickleError, NoSuchJobError


Expand Down Expand Up @@ -146,9 +146,9 @@ def kwargs(self):
return self._kwargs

@classmethod
def exists(cls, job_id):
def exists(cls, job_id, connection=None):
"""Returns whether a job hash exists for the given job ID."""
conn = get_current_connection()
conn = resolve_connection(connection)
return conn.exists(cls.key_for(job_id))

@classmethod
Expand All @@ -161,9 +161,7 @@ def fetch(cls, id, connection=None):
return job

def __init__(self, id=None, connection=None):
if connection is None:
connection = get_current_connection()
self.connection = connection
self.connection = resolve_connection(connection)
self._id = id
self.created_at = times.now()
self._func_name = None
Expand Down
2 changes: 1 addition & 1 deletion rq/queue.py
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ def compact(self):
job_id = self.connection.lpop(COMPACT_QUEUE)
if job_id is None:
break
if Job.exists(job_id):
if Job.exists(job_id, self.connection):
self.connection.rpush(self.key, job_id)


Expand Down
20 changes: 20 additions & 0 deletions rq/scripts/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,26 @@ def add_standard_arguments(parser):
help='The Redis database (default: 0)')


def read_config_file(module):
"""Reads all UPPERCASE variables defined in the given module file."""
settings = __import__(module, [], [], [], -1)
return dict([(k, v)
for k, v in settings.__dict__.items()
if k.upper() == k])


def setup_default_arguments(args, settings):
""" Sets up args from settings or defaults """
if args.host is None:
args.host = settings.get('REDIS_HOST', 'localhost')
if args.port is None:
args.port = int(settings.get('REDIS_PORT', 6379))
else:
args.port = int(args.port)
if args.db is None:
args.db = settings.get('REDIS_DB', 0)


def setup_redis(args):
redis_conn = redis.Redis(host=args.host, port=args.port, db=args.db)
use_connection(redis_conn)
8 changes: 8 additions & 0 deletions rq/scripts/rqinfo.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,8 @@
from rq.utils import gettermsize, make_colorizer
from rq.scripts import add_standard_arguments
from rq.scripts import setup_redis
from rq.scripts import read_config_file
from rq.scripts import setup_default_arguments

red = make_colorizer('darkred')
green = make_colorizer('darkgreen')
Expand Down Expand Up @@ -162,6 +164,12 @@ def main():
if args.path:
sys.path = args.path.split(':') + sys.path

settings = {}
if args.config:
settings = read_config_file(args.config)

setup_default_arguments(args, settings)

setup_redis(args)
try:
if args.only_queues:
Expand Down
18 changes: 5 additions & 13 deletions rq/scripts/rqworker.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
from redis.exceptions import ConnectionError
from rq.scripts import add_standard_arguments
from rq.scripts import setup_redis
from rq.scripts import read_config_file
from rq.scripts import setup_default_arguments


def format_colors(record, handler):
Expand Down Expand Up @@ -53,12 +55,6 @@ def parse_args():
return parser.parse_args()


def read_config_file(module):
"""Reads all UPPERCASE variables defined in the given module file."""
settings = __import__(module, [], [], [], -1)
return {k: v for k, v in settings.__dict__.items() if k.upper() == k}


def main():
args = parse_args()

Expand All @@ -69,13 +65,9 @@ def main():
if args.config:
settings = read_config_file(args.config)

# Default arguments
if args.host is None:
args.host = settings.get('REDIS_HOST', 'localhost')
if args.port is None:
args.port = int(settings.get('REDIS_PORT', 6379))
if args.db is None:
args.db = settings.get('REDIS_DB', 0)
setup_default_arguments(args, settings)

# Other default arguments
if args.sentry_dsn is None:
args.sentry_dsn = settings.get('SENTRY_DSN', None)

Expand Down
2 changes: 1 addition & 1 deletion rq/version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
VERSION = '0.3.1'
VERSION = '0.3.2'

0 comments on commit 4b66d7a

Please sign in to comment.