526 Commits (88fe5124d8925408743fe9d1461bda60dde1334a)

Author SHA1 Message Date
Vincent Driessen b52089ede1 Fix NameError.
This was the result of a faulty merge. I'm sorry.
12 years ago
Vincent Driessen cf98591ca5 Merge branch 'hotfix-0.3.12'
Conflicts:
	CHANGES.md
	rq/worker.py
12 years ago
Vincent Driessen b5e1377023 Bump version to 0.3.12.
Conflicts:
	CHANGES.md
12 years ago
Vincent Driessen d0fa35dc66 Python 2.6 fix. 12 years ago
Vincent Driessen 8414a67d65 Fix bug where worker died from monitoring views.
Fixes #288.

Conflicts:
	rq/worker.py
12 years ago
Andy Yao 31830120f8 delte Unused variable 'prefix' 12 years ago
Malthe Borch c5a381fbe9 Remove dependency on 'times' library (see issue #286).
Basically, for the functionality needed, a dependency on 'times' (which
in turn depends on 'python-dateutil') seem unnecessary.
12 years ago
Vincent Driessen 9abbfc4dfb Use kwarg to specify connection. 12 years ago
Malthe Borch 1792a194bd Should pass a connection here because we might not be using a connection stack. 12 years ago
Joshua Chia ef2bbe762b Minor cleanup: Use Status enums instead of strings 12 years ago
reterVision c27cb5217c Remove duplicate function call. 12 years ago
Marc Brinkmann 3d0138d319 Added Worker.get_current_job() convenience method. 12 years ago
Marc Brinkmann c745f6811a Added job_id property, storing the id of the currently executing job. 12 years ago
Marc Brinkmann 606d4fa10f Add optional pipeline parameter to set_state. 12 years ago
Selwin Ong e4589a4641 job.cancel() should be pipelined. 12 years ago
reterVision b79fac8840 Fix typo in Doc string. 12 years ago
Vincent Driessen af87cce382 Merge branch 'selwin-custom-worker' 12 years ago
Vincent Driessen 3546aae0c0 Let's keep things readable. 12 years ago
Selwin Ong 28dcb5dcd1 Renamed "--worker" flag to "--worker-class". 12 years ago
Selwin Ong 4ff038481f First stab at allowing user to specify a custom worker class. 12 years ago
Selwin Ong 8aa5771646 job.cancel() now deletes dependents_key 12 years ago
Vincent Driessen 7fdd115e28 Merge branch 'jchia-master'
Conflicts:
	rq/job.py
	rq/queue.py
12 years ago
Vincent Driessen bb3dc5b0b2 Terminology change: waitlist -> dependents. 12 years ago
Joshua Chia b89d6c8990 Set timeout at Job creation instead of during enqueueing; made Queue.enqueue_call respect `timeout` when `after` is specified 12 years ago
Selwin Ong 15c4b562ba Reverse dependency mapping should be a set instead of a list. 12 years ago
Selwin Ong 93e5e552b7 Replaced "after" kwarg with "depends_on". 12 years ago
Mark Tozzi 5f6a1f0ac5 Empty the queue before deleteing the jobs, in case new jobs arrive 12 years ago
Mark Tozzi 0713ad03c2 Empty now deletes all jobs in the queue 12 years ago
Vincent Driessen 4dbbfc1d8f Merge pull request #252 from nvie/use-utc
Store birth and death values as UTC dates
12 years ago
Rob Harrigan 02c5d902ec Merge remote-tracking branch 'upstream/master'
Conflicts:
	tests/test_queue.py
12 years ago
Rob Harrigan 5e4d5f642e Only save queue to set on enqueue.
Validate queue key still exists when all() is called
12 years ago
Selwin Ong fd44ad39d4 Python 3 fixes for job dependency stuff. 12 years ago
Selwin Ong fcfe55fe13 Merge branch 'master' into job_dependency
Conflicts:
	rq/job.py
	rq/queue.py
12 years ago
Vincent Driessen aefa44b30c Store birth and death values as UTC dates. 12 years ago
Vincent Driessen d037696fc5 Merge branch 'asldevi-master' 12 years ago
Vincent Driessen eb5bb6329c PEP8ify. 12 years ago
Vincent Driessen 524fe15839 Merge branch 'pricingassistant-master' 12 years ago
Vincent Driessen 4d92079694 PEP8ify. 12 years ago
Vincent Driessen 537476b488 PEP8ify. 12 years ago
Vincent Driessen 1b558704d3 Fix: COMPACT_QUEUE should be a unique key.
This fixes #230.  Thanks, @sylvinus.
12 years ago
Sylvain Zimmer a296619074 Split Job.dump() and Job.save() 12 years ago
Rob Harrigan c08b96e027 Use a redis set to store queue names, instead of relying on the redis "keys" method,
which does not perform well on large databases.
12 years ago
Vincent Driessen 135b1ff10c Merge branch 'igungor-job-description' 12 years ago
Vincent Driessen 90fcb6c9d0 PEP8ify. 12 years ago
Vincent Driessen 57ea6203d1 Let's not change positional argument order.
This may break other people's programs.
12 years ago
Vincent Driessen 5d0f91e542 Release 0.3.11. 12 years ago
Vincent Driessen 536e8a89cf Fixes for Python 3. 12 years ago
H. İbrahim Güngör 10bda9684d Pass description parameter to job constructor in order to distinguish job names in queue.jobs or in rq-dashboard. Add related test case. 12 years ago
Vincent Driessen 49c7cf0af7 Release 0.3.10. 12 years ago
Vincent Driessen 004cf44af6 Bump version to 0.3.9. 12 years ago
Alex Morega 328e7611d3 use utf-8 instead of ascii 12 years ago
Alex Morega 5b630b1e22 port rqinfo to py3 12 years ago
Alex Morega 8d61d3bf26 port string handling to py3
Redis uses byte values for everything. We save queue names and job
IDs as unicode. So we need to convert every time we get data from redis.
12 years ago
Alex Morega 6eeee85cc3 remove backwards compat for custom properties 12 years ago
Alex Morega a3b5ce5e46 accomodate py3 imports and builtins 12 years ago
Alex Morega a75ea0d693 changes by python-modernize 12 years ago
Selwin Ong 0198916856 Fixes an issue where register_sentry breaks when logging jobs with
unimportable function.
12 years ago
Vincent Driessen 2e9fa1d0a7 Release 0.3.8. 12 years ago
Vincent Driessen 83496fef32 Merge pull request #214 from Plexical/write-pid-file
Writes an optional specified PID file on startup
12 years ago
Devi c4e7c17994 deprecate use of host/db/port options for Redis 12 years ago
Devi dd34f1ffd9 Merge remote branch 'original/master' 12 years ago
Jacob Oscarson 5505291818 Polished help message for PID file specification 12 years ago
Jacob Oscarson 995554cdd2 Removed alternative parameters for PID file creation 12 years ago
Onilton Maciel 3afc32f08a End calculation in get_jobs_ids in fixed. Length is respected 12 years ago
Onilton Maciel 97de8ea3cc Fixed typos and errors found. Tests passing now 12 years ago
oniltonmaciel 5cfbae61a9 Replaced limit by length and start by offset
Replaced limit by length and start by offset to remove a possible ambiguity
12 years ago
Justin Unwin af04545bbf Ok i am being lazy using the try catch 12 years ago
Justin Unwin 17be896744 Fix a problem caused when a nonstandard stdout is defined and not
properly implemented
12 years ago
Devi a0d46c93f3 take REDIS_URL from settings if exists 12 years ago
Jacob Oscarson 72d219a24c Writes an optional specified PID file on startup 12 years ago
Selwin Ong 6ee45597ca Don't fail if job dependency is modified during enqueue process. 12 years ago
Selwin Ong e7e8579888 Merge branch 'master' of git://github.com/nvie/rq into job_dependency
Conflicts:
	rq/queue.py
12 years ago
Selwin Ong 2e826e2b1f Internally renamed the term "parent" to "dependency". 12 years ago
Selwin Ong 0dfb041383 Simplify enqueue_waitlist by using lpop. 12 years ago
Selwin Ong 18ff57ef35 Avoid race conditions when enqueueing job with dependency. 12 years ago
Vincent Driessen 73b7453e40 Fix typo. 12 years ago
Vincent Driessen 2fb6e5ca1a Minor refactoring of the paging logic. 12 years ago
Alex Morega e3075ea6be get a page of jobs 12 years ago
Alex Morega ef0f04bff6 extract `safe_fetch_job` method 12 years ago
Vincent Driessen 0f804e07ae Merge pull request #198 from johannth/scripts-respect-url
Made rqworker and rqinfo respect db parameters from --url
12 years ago
Selwin Ong 6550f86646 Don't enqueue waitlisted jobs on failed execution. 12 years ago
Selwin Ong eadc7db29f First stab at writing implementing job dependency. 12 years ago
Jóhann Þorvaldur Bergþórsson 7660fbdc18 Made rqworker and rqinfo respect db parameters from --url
When starting the rqworker and rqinfo scripts with an --url parameter containing a non default database, e.g. redis://localhost:6379/2, both scripts connected db 0 instead of the desired database. Fixed this behavior by ignoring the --host, --port and --db arguments if --url is there.

Also fixed another issue with the rqinfo script, in which it defaulted to only the 'default' queue instead of finding all available queues using Queue.all().
12 years ago
Selwin Ong a0c9267550 Job.create should also accept arguments in list format. 12 years ago
Vincent Driessen 067a1760ed Merge branch 'Plexical-config-socket' 12 years ago
Bruno Renié 7a8fe6be30 Ability to get SENTRY_DSN from the environment variables 12 years ago
Jacob Oscarson 11b2cf2bd5 Perform actual connection (+ increase test coverage) 12 years ago
Jacob Oscarson ef43790ba2 Better placing + testability of socket as a cli parameter 12 years ago
Jacob Oscarson 02288dd048 Optionally configure connection as path to Unix socket (tbd: actual connection) 12 years ago
Vincent Driessen 5a5e14cc70 Merge branch 'hotfix/0.3.7'
Conflicts:
	CHANGES.md
	rq/version.py
12 years ago
Vincent Driessen 93ba0b4d6e Bump version to 0.3.7. 12 years ago
Vincent Driessen 66741fff7b Fix bug where workers would not execute builtin functions properly. 12 years ago
Vincent Driessen 9633d36e85 Merge branch 'selwin-master' 12 years ago
Vincent Driessen 5289647970 Remove unused import. 12 years ago
Selwin Ong 85e9014296 Moved some logic from worker.perform_job() to job.cleanup(). 12 years ago
Vincent Driessen 6485fe094d Prepare for next 0.3.x version. 12 years ago
Vincent Driessen d5f1740c3d Bump version to 0.3.6. 12 years ago
Vincent Driessen a04169e561 Allow rqworker to run more silently. 12 years ago
Selwin Ong c987569650 Safe fetching a deleted job removes the deleted job from queue. 12 years ago
Vincent Driessen 501a3870e1 Ignore a job when there isn't a "data" key available. 12 years ago
Vincent Driessen 223e09f4fe Add rq.contrib.legacy.cleanup_ghosts() function, to clean up old mess. 12 years ago
Vincent Driessen d39badb4cc Prevent the use of indefinite timeouts.
Using them would really mess with the new expiring worker keys (they
would disappear, even though the workers aren't dead).
12 years ago
Vincent Driessen e0866cdc6c Log the act of sending a heartbeat (DEBUG level). 12 years ago
Vincent Driessen e4d37332f0 Fix typos. 12 years ago
Vincent Driessen e8c1885eda Avoid negative timeouts when default_worker_ttl is < 60. 12 years ago
Vincent Driessen 640195d5e4 Merge branch 'master' into yaniv-aknin-worker_ttl 12 years ago
Vincent Driessen a7f927f845 Fix non-relative import. 12 years ago
Vincent Driessen 192770773a Remove unused import. 12 years ago
Vincent Driessen c0a594d47a Merge pull request #177 from selwin/master
FailedQueue.requeue should set job status back to Queued
12 years ago
Selwin Ong e5fa82aa5d Merge branch 'master' of github.com:selwin/rq 12 years ago
Selwin Ong 05d744c9af Requeuing a job should set its status back to Queued. 12 years ago
Vincent Driessen 4688498e2d Attach job ID when unpickling fails in .dequeue().
This makes the behaviour consistent with .dequeue_any().
12 years ago
Vincent Driessen 83525c42c7 Prevent against 'created_at' field being None. 12 years ago
Vincent Driessen 7d37c257ae Prepare for 0.3.6. 13 years ago
Vincent Driessen c427eda36c Bump version to 0.3.5. 13 years ago
Vincent Driessen 54254f2271 Patch the connection instances.
This patches the connection object (which is either a StrictRedis
instance or a Redis instance), to have alternative class methods that
behave exactly like their StrictRedis counterparts, no matter whether
which type the object is.  Only the ambiguous methods are patched.  The
exhaustive list:

- _zadd          (fixes argument order)
- _lrem          (fixes argument order)
- _setex         (fixes argument order)
- _pipeline      (always returns a StrictPipeline)
- _ttl           (fixes return value)
- _pttl          (fixes return value)

This makes it possible to call the methods reliably without polluting
the RQ code any further.
13 years ago
Vincent Driessen 67880343f1 Make inner_exception optional, and use new except syntax. 13 years ago
Idan Kamara 2baa2e370f job: save the real exception when unpickling fails
We raise our own exception which hides the real error (often an ImportError),
making it difficult to see what happend. Instead, save the original exception
too.
13 years ago
Yaniv Aknin 4925b09aa5 Set worker ttl and maintain it when idle/taking/finishing jobs
This change could use far better test coverage, but I'm not sure how to
test it without refactoring more of the code than I think is reasonable
in the scope of this work.
13 years ago
Yaniv Aknin 74c2351232 Refactor dequeue_any to accept arbitrary timeouts
The 'blocking' parameter was replaced with a 'timeout' parameter.

The timeout parameter is interpreted thus:
    0 - no timeout (block forever, equivalent to blocking=True)
    None - non-blocking (return value or None immediately, equivalent to
                         blocking=False)
    <integer> - maximum seconds to block

Upon timing out, a dequeue operation will raise DequeueTimeout.
13 years ago
Vincent Driessen 743cf3cd74 Merge branch 'vierja-ended_time' 13 years ago
Vincent Driessen 20d435a077 Prepare for 0.3.5. 13 years ago
Vincent Driessen f818fb5d43 Bump version to 0.3.4. 13 years ago
Vincent Driessen e1b81b1669 Avoid new-style classes under Python 2.6.
Little ugly fix, required because Python 2.6's logging uses old-style
classes.  Thanks for finding this one, @deferraz.
13 years ago
Vincent Driessen 77fb32791d Include a copy of dictConfig in RQ, for Python 2.6 compat. 13 years ago
Vincent Driessen e29981a008 Bump to new development version. 13 years ago
Vincent Driessen 55bb32cb36 Release 0.3.3. 13 years ago
Vincent Driessen d1c2b3b78d Merge branch 'selwin-remove-logbook'
Conflicts:
	rq/utils.py
	rq/worker.py
	setup.cfg
	setup.py
13 years ago
Vincent Driessen 37b3bb4bd4 Have Worker.work() setup logging.
Basically, I don't want to enforce users to configure _any_ logging
stack when writing a basic worker, like this:

    from rq import Worker, Queue, Connection

    with Connection():
        q = Queue()
        w = Worker([q])
        w.work(burst=True)

In case you want to disable logging altogether, you can configure your
logging stack to do so.
13 years ago
Vincent Driessen 90b15fd0b6 Don't silently fail when unpickling.
When a pickled job string can't be unpickled because some required
module isn't loadable, this leads to an `UnpickleError` in the worker
(not in the horse).

Currently we just assume "garbage" in the job's data field, and silently
ignore it.

This is bad.

Really bad.

Because it avoids the normal exception handling mechanism that RQ has.

Historically, this "feature" was introduced to ignore any invalid pickle
data ("bad strings") on queues, and go on. However, we must assume data
inside `job.data` to be valid pickle data.

While an invalid _format_ of pickle data (e.g. the string "blablah"
isn't valid) leads to unpickle errors, unpickling errors will also occur
when the job can't be validly constructed in memory for other reasons,
like being unable to load a specific class.

Django is a good example of this: try submitting jobs that use
`django.conf.settings` while the `DJANGO_SETTINGS_MODULE` env var isn't
set. Currently, RQ workers will drop these jobs and dismiss them like
any non-valid pickle data. You won't be notified.

This patch changes RQ's behaviour to never ignore invalid string data on
any queue and _always_ handle these errors explicitly (but without
bringing the main loop down, of course).
13 years ago
Selwin Ong 40d0a7d9a9 Removed __main__ that was accidentally added to rqworker script. 13 years ago
Selwin Ong d1f586b413 Only configure logging handlers if not already present. 13 years ago
Javier Rey d660b611db ended_at time is now saved when job is finished 13 years ago
Selwin Ong f498de57b6 Always call job.save even on synchronous queues so get_current_job doesn't fail 13 years ago
Vincent Driessen 10237ddcb4 Merge branch 'job-access-within-job'
Conflicts:
	CHANGES.md
	rq/job.py
13 years ago
Ulrich Petri ba57f104ff Switched config file loading to import lib to allow dotted "paths" to settings modules 13 years ago
Jon Parise e90efc254b Use `redis.from_url()` for greater compatibility.
This lets us keep the redis-py version requirement back at 2.4.13.
13 years ago
Jon Parise eb00f69ced Add a standard --url argument to all scripts.
redis-py now supports URL-based connection configuration.  When --url
is specified, we use it to construct the Redis object.  Otherwise, we
use the existing argument-based construction method.

`Redis.from_url()` is new in redis-py 2.6.2, so that prerequisite has
been adjusted accordingly.
13 years ago
Alexander Saltanov 0e638d795b Don't show traceback in rqinfo when ^C is pressed. 13 years ago
Vincent Driessen d80fa53d7e Ugh. Syntax. 13 years ago
Vincent Driessen 11794ccef5 Merge branch 'sburns-no-colorize-notty' 13 years ago
Vincent Driessen 435cbc0f53 Simplify a bit. 13 years ago
Scott Burns 59a01b49f4 Don't colorize non-tty stdout/err 13 years ago
Vincent Driessen 9ff5b18ebb Merge branch 'sburns-decorator-ttl' 13 years ago
Vincent Driessen 4e6b19d5ab Bump version number. 13 years ago
Vincent Driessen 5e59c6e28e Rename the const. 13 years ago
Scott Burns 538bbb1b55 Decorator accepts result_ttl argument 13 years ago
Timo Steidle 881b944283 Changed status "Running" into "started" to be more consistent with the other statuses 13 years ago
Timo Steidle 8787cfbb30 Added new job status "Running" 13 years ago
Vincent Driessen c0df77f84d Support QUEUES as a config setting in settings files. 13 years ago
Vincent Driessen 81270c8e59 Support REDIS_PASSWORD setting in settings. 13 years ago
Scott Burns c705a2f06a Expose Redis password to scripts
Allow rqworker and rqinfo to connect to
password-protected Redis hosts.
13 years ago
Vincent Driessen 7ff6ed72da Add backward compat (will be removed in 0.4).
This is to support users that are relying on the current custom property
implementation.  A warning will be displayed on the console, stating
that this support will be removed from RQ version 0.4.
13 years ago
Vincent Driessen 8cb6a21670 Only store custom properties when they're written to the meta dict. 13 years ago
Vincent Driessen a247c6eaa1 Merge branch 'master' into remove-logbook 13 years ago
Vincent Driessen 4b66d7af41 Merge branch 'master' into job-access-within-job
Conflicts:
	rq/job.py
13 years ago
Vincent Driessen 8581cd6463 Don't allow jobs without Redis connection.
And other connection-related fixes.
13 years ago
Vincent Driessen f9137311b5 Release version 0.3.2. 13 years ago
Vincent Driessen 2f578a4c2d Avoid dict comprehension for compatibility.
This fixes #128.
13 years ago
Graeme Coupar 365d1d8226 Fixed argument handling in rqinfo
rqinfo was using None for the redis host and port, which was causing
exceptions when trying to connect.  It was possible to supply these on
the commandline, but port was just being passed straight through as a
string, which also caused exceptions.

This commit moves some of the argument & configuration file handling out
of rqworker and into the scripts/__init__.py file, and then calls it
from rqinfo.
13 years ago
Vincent Driessen 95d3aed98e Store the job ID on the internal stack.
It does so instead of the instance itself.  Still returns the job---the
interface hasn't changed.
13 years ago
Vincent Driessen 372de4b45a Implement the get_current_job() function.
This fixes #125.
13 years ago
Vincent Driessen 879a87d158 Remove logbook and replace it with logging.
This reverts commit 1ab8c19696 and
reintroduces all changes made by @dstufft.

Still, it needs more patches to reeanble the default log-to-console
behaviour.  See #121.
13 years ago
Vincent Driessen 1ab8c19696 Revert "Remove logbook and replace it with logging".
This reverts the commit range f367c38..978ba2d.

Issue #121 is currently blocking the 0.3.1 release.
13 years ago
Vincent Driessen a6e57dd7c0 Fix: change import path before importing settings module. 13 years ago
Vincent Driessen ce1da3f5ca Add support for configuration RQ workers with Sentry with a single flag.
This fixes #122.
13 years ago
Vincent Driessen 1687633c07 Add support for passing configuration files to rqworker.
This fixes #123.
13 years ago
Vincent Driessen 781f3e0460 Add test for custom exc handling. 13 years ago
Vincent Driessen db80be4ef7 Fix typos. 13 years ago
Vincent Driessen db4ec16be8 Also report job description. 13 years ago
Vincent Driessen 502bf59399 Add convenience directive to easily configure Sentry with RQ. 13 years ago
Vincent Driessen cdc3a6c7a9 Convenience exc_handler registration in __init__.
Allow custom exception handlers to be passed in in the Worker
constructor.
13 years ago
Vincent Driessen f457bd9da2 Remove incorrect arg to pop_exc_handler method. 13 years ago
Vincent Driessen daa8f38b4b Improve formatting of the exceptions on the console. 13 years ago
Vincent Driessen a20deb2c52 Add custom exception handling capabilities.
This fixes #95.
13 years ago
Vincent Driessen a017756748 Fetch fresh status value on every request.
It could probably require a bit of caching, to prevent too many fetches
per time slot (for example, return the locally cached value if that
value is as fresh as a second or so).

This fixes #120.
13 years ago
Vincent Driessen 35761a0d71 Merge branch 'selwin-persist-None-result' 13 years ago
Vincent Driessen 6b0ebe9ceb Remove is_done property.
It is too similar to is_finished.
13 years ago
Vincent Driessen bc7e32bae8 Add expiry info to the worker log. 13 years ago
Vincent Driessen 4b797fbf43 Don't use strings, but comments. 13 years ago
Vincent Driessen 9549b34d60 Add convenience accessor properties for status. 13 years ago
Vincent Driessen 4224304291 I like this implementation of an 'enum' better. 13 years ago
Selwin Ong 41946d1bb3 Worker.find_by_key now properly uses connection. 13 years ago
Selwin Ong 442b389b97 Job returning None as result are now persisted correctly.
Job status can now be checked via ``status`` property which should
return either "queued", "finished" or "failed".
13 years ago
Vincent Driessen f06ef9c975 Merge branch 'selwin-async-2'
This fixes #114.
13 years ago
Vincent Driessen e2a0d83eee Whoops. 13 years ago
Vincent Driessen 83369f3b9b Prefer `result` over `return_value`.
`return_value` still is available as a backward-compatible accessor.

This fixes #116.
13 years ago
Selwin Ong 06d75630e0 Execute job immediately if Queue(async=False) 13 years ago
Donald Stufft 58ccd337c0 Don't hardcode a name into logging.getLogger 13 years ago
Donald Stufft 66235f7ad0 Switch to using slightly more pythonic log code 13 years ago
Donald Stufft aeb17d0497 Make the rqworker script use the logging module instead of logbook 13 years ago
Donald Stufft 82c4ac6ec2 Add a Handler that enables colorized output 13 years ago
Vincent Driessen f367c38132 Bump version number and add changelog. 13 years ago
Vincent Driessen 720011c33e Merge branch 'selwin-result_ttl' 13 years ago
Vincent Driessen a9cb201d39 PEP8ify. 13 years ago
Vincent Driessen 5963ec6d77 Try to make the expiration code a bit more readable. 13 years ago
Vincent Driessen 4b2838943b Rename rv_ttl to default_result_ttl. 13 years ago
Vincent Driessen 78864e2581 PEP8ify. 13 years ago
Selwin Ong a5e6765990 Added "result_ttl" property on jobs that determines how long job results are persisted in Redis. 13 years ago
Vincent Driessen 5f4bb8dfc5 Fix word ordering. 13 years ago