526 Commits (192fbc9c507bb5f3347f39304b5c2fb8ea8f7f43)

Author SHA1 Message Date
foxx 6bb8b26114 Allow job ID to be set on enqueue/enqueue_call() - fixes #412 10 years ago
zhangliyong 5883bb9efe Make pep8 10 years ago
zhangliyong 0ddd174868 Fix invoking requeue command bug in test_requeue 10 years ago
zhangliyong 8782b11f1e Adjust test_requeue 10 years ago
zhangliyong 1ab92602e8 Add testcase for rq_cli 10 years ago
Vincent Driessen 3ded050804 Replace by a string just as wide to not make this invalid binary pickle data. 11 years ago
Vincent Driessen 79db282879 Support enqueueing callable classes.
Fixes #388.
11 years ago
Vincent Driessen 12932a433b Merge pull request #382 from selwin/cancel-should-remove-from-queue
job.cancel() should remove itself from queue
11 years ago
Selwin Ong 638211df20 job.cancel() should remove itself from queue. 11 years ago
Selwin Ong 7ac1c3500a Worker.__init__ should accept custom job class. 11 years ago
Selwin Ong 141278bb42 Queue.__init__ supports job_class argument. 11 years ago
Vincent Driessen eb469f8da0 Fix broken stub in tests. 11 years ago
Vincent Driessen da70ba580b Fix broken import. 11 years ago
Vincent Driessen c5939479b5 Merge remote-tracking branch 'origin/master' into SanyerMyasoedov-master
Conflicts:
	rq/decorators.py
	tests/__init__.py
	tests/test_decorator.py
11 years ago
Vincent Driessen ab9e6b852e Fix PEP8 complaints. 11 years ago
Vincent Driessen 38ec259b6e Enable the most modern Python syntax. 11 years ago
msoedov e76020d894 Removed @resolve_connection from job decorator.
-- resolve_connection already presence inside Queue __init__.
11 years ago
msoedov dd994142b3 Added tests and updated requirements with mock lib. 11 years ago
Vincent Driessen 5fe82bd543 Merge pull request #341 from SanyerMyasoedov/master
Added depends_on to job decorator
11 years ago
msoedov 46c96f9481 Added depends_on to job decorator 11 years ago
Selwin Ong 4f918041e3 Rearranged how explicit kwargs are passed into queue.enqueue(). Fixes #322 11 years ago
Selwin Ong f5c3c9a6dd Deprecate job.status. 11 years ago
Selwin Ong 2fe5d9e25e Python 3 compatibility with worker.get_current_job(). 11 years ago
Selwin Ong 802ecb5ccb Renamed worker.set_job_id() and worker.get_job_id() for consistency. 11 years ago
Selwin Ong 93bb9ec5f4 Added tests for worker.get_current_job(). 11 years ago
Vincent Driessen a2213f1364 Fix tests. 11 years ago
Vincent Driessen 85a7a14a4c Replace substring in Pickle string differently.
Pickle uses a new format since Python 3, which is incompatible with
Python 2.  This problem now pops up because the replacement string had
a different length, so we broke the pickle protocol with this test.
11 years ago
Vincent Driessen 44233709ed Allow two-way setting of job data properties.
As a side-effect, this also enables us to lazily load the data.
11 years ago
Malthe Borch ba0b39a43b Unpickle job data lazily. This fixes issue #294. 11 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.
11 years ago
Joshua Chia ef2bbe762b Minor cleanup: Use Status enums instead of strings 11 years ago
Selwin Ong b997fb45bf Removed unnecessary lines from test_job.py. 11 years ago
Selwin Ong 8aa5771646 job.cancel() now deletes dependents_key 11 years ago
Vincent Driessen 7fdd115e28 Merge branch 'jchia-master'
Conflicts:
	rq/job.py
	rq/queue.py
11 years ago
Vincent Driessen 01f9a98ad9 Make test more readable by using constants. 11 years ago
Vincent Driessen bb3dc5b0b2 Terminology change: waitlist -> dependents. 11 years ago
Joshua Chia b89d6c8990 Set timeout at Job creation instead of during enqueueing; made Queue.enqueue_call respect `timeout` when `after` is specified 11 years ago
Selwin Ong 15c4b562ba Reverse dependency mapping should be a set instead of a list. 11 years ago
Selwin Ong 93e5e552b7 Replaced "after" kwarg with "depends_on". 11 years ago
Mark Tozzi 0713ad03c2 Empty now deletes all jobs in the queue 11 years ago
Vincent Driessen 1fed0e0ed5 PEP8ify. 11 years ago
Vincent Driessen d92022bb83 Record new behaviour of Queue.all() explicitly in a test. 11 years ago
Vincent Driessen 13b8d03c59 Remove misleading test. 11 years ago
Rob Harrigan 02c5d902ec Merge remote-tracking branch 'upstream/master'
Conflicts:
	tests/test_queue.py
11 years ago
Rob Harrigan 5e4d5f642e Only save queue to set on enqueue.
Validate queue key still exists when all() is called
11 years ago
Selwin Ong fd44ad39d4 Python 3 fixes for job dependency stuff. 11 years ago
Selwin Ong fcfe55fe13 Merge branch 'master' into job_dependency
Conflicts:
	rq/job.py
	rq/queue.py
11 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.
11 years ago
Vincent Driessen 1274b09115 Use constants in tests, instead of calling more functions. 11 years ago
Vincent Driessen 90fcb6c9d0 PEP8ify. 11 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
Alex Morega 328e7611d3 use utf-8 instead of ascii 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
Vincent Driessen 670a4e2a4e Python 3 chokes on this one. Whatever man. 12 years ago
Alex Morega a3b5ce5e46 accomodate py3 imports and builtins 12 years ago
Wojciech Bederski f9897ea920 register_sentry breaks failed queue when func cannot be imported 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 7ea02d4029 Add explicit classmethod test. 12 years ago
Vincent Driessen a5dff6659c Replace the Calculator fixture by a Number fixture.
This makes the tests a little more realistic, since I want to add a test
for class methods.
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
Selwin Ong 85e9014296 Moved some logic from worker.perform_job() to job.cleanup(). 12 years ago
Selwin Ong c987569650 Safe fetching a deleted job removes the deleted job from queue. 12 years ago
Vincent Driessen 640195d5e4 Merge branch 'master' into yaniv-aknin-worker_ttl 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 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.
12 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.
12 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.
12 years ago
Vincent Driessen 06b48c2026 Use unittest2 for Python 2.6. 12 years ago
Vincent Driessen d1c2b3b78d Merge branch 'selwin-remove-logbook'
Conflicts:
	rq/utils.py
	rq/worker.py
	setup.cfg
	setup.py
12 years ago
Selwin Ong f498de57b6 Always call job.save even on synchronous queues so get_current_job doesn't fail 12 years ago
Vincent Driessen 10237ddcb4 Merge branch 'job-access-within-job'
Conflicts:
	CHANGES.md
	rq/job.py
12 years ago
Ulrich Petri 43038d3150 Added tests for config file loading 12 years ago
Vincent Driessen 5e59c6e28e Rename the const. 12 years ago
Scott Burns 538bbb1b55 Decorator accepts result_ttl argument 12 years ago
Vincent Driessen 8cb6a21670 Only store custom properties when they're written to the meta dict. 12 years ago
Vincent Driessen 5e80aa27eb Fix comment. 12 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.
12 years ago
Vincent Driessen 372de4b45a Implement the get_current_job() function.
This fixes #125.
12 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.
12 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.
12 years ago
Vincent Driessen 781f3e0460 Add test for custom exc handling. 12 years ago
Vincent Driessen 6b0ebe9ceb Remove is_done property.
It is too similar to is_finished.
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 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 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 a08c983efc Fix tests to use logging 13 years ago
Vincent Driessen 5fcedbcdad Change assertEqual to assertGreaterThan, to make the test a little less
brittle (on slow machines).
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
Selwin Ong a4f1de358f Raise a StopException when Control+C is pressed. 13 years ago
Vincent Driessen d697ddb93a Resolve connections early.
Fixes #101.
13 years ago
Vincent Driessen c7225ba257 Minor bug in test case. 13 years ago
Vincent Driessen 35dedf3db4 Make test descriptions show up in short (oneliner) mode, as ./run_tests does. 13 years ago
Vincent Driessen ea19bdc910 Merge branch 'new-enqueue' into selwin-decorator 13 years ago
Selwin Ong 8c3292d35b Make "queue" argument in job decorator required.
job decorator now uses Queue's "enqueue_call" method.
13 years ago
Vincent Driessen d66939ff4a Don't use the (internal) .enqueue_call() in unit tests. 13 years ago
Selwin Ong ae97f862dc Merge branch 'master' into decorator 13 years ago
Vincent Driessen e6bb7de8c0 Get rid of the ambiguity when passing the timeout argument to .enqueue() calls. 13 years ago
Vincent Driessen f6e67431d7 Refactor the .enqueue() API to not gobble the timeout kwargs.
This fixes #98.
13 years ago
Selwin Ong bdc1af28d1 Added a job decorator. 13 years ago
Vincent Driessen 3a8f30a53e Add test. 13 years ago
Vincent Driessen 604fce99a1 Merge with master. 13 years ago
Selwin Ong 1fb0a1bfac Modified ``Job`` ``save`` and ``refresh`` methods to support persisting
additional ``Job`` attributes into Redis.
13 years ago
Vincent Driessen cfbbc3d0ea Merge remote-tracking branch 'omarkhan/instance_methods' 13 years ago
Omar Khan 03bd49511d Allow instance methods to be enqueued
Only works for picklable instances
13 years ago
Goran Peretin 34d161eb11 requeueing preserves job timeout 13 years ago
Goran Peretin 317a58a3b5 quarantine preserves job timeout 13 years ago
Vincent Driessen f5951900c8 Make unit tests compatible with Python < 2.7. 13 years ago
Vincent Driessen b45770cd3c Fix unit test expressions. 13 years ago
Vincent Driessen 2982486448 New connection management.
Connections can now be set explicitly on Queues, Workers, and Jobs.
Jobs that are implicitly created by Queue or Worker API calls now
inherit the connection of their creator's.

For all RQ object instances that are created now holds that the
"current" connection is used if none is passed in explicitly.  The
"current" connection is thus hold on to at creation time and won't be
changed for the lifetime of the object.

Effectively, this means that, given a default Redis connection, say you
create a queue Q1, then push another Redis connection onto the
connection stack, then create Q2. In that case, Q1 means a queue on the
first connection and Q2 on the second connection.

This is way more clear than it used to be.

Also, I've removed the `use_redis()` call, which was named ugly.
Instead, some new alternatives for connection management now exist.

You can push/pop connections now:

    >>> my_conn = Redis()
    >>> push_connection(my_conn)
    >>> q = Queue()
    >>> q.connection == my_conn
    True
    >>> pop_connection() == my_conn

Also, you can stack them syntactically:

    >>> conn1 = Redis()
    >>> conn2 = Redis('example.org', 1234)
    >>> with Connection(conn1):
    ...     q = Queue()
    ...     with Connection(conn2):
    ...         q2 = Queue()
    ...     q3 = Queue()
    >>> q.connection == conn1
    True
    >>> q2.connection == conn2
    True
    >>> q3.connection == conn1
    True

Or, if you only require a single connection to Redis (for most uses):

    >>> use_connection(Redis())
13 years ago
Vincent Driessen c684949045 Don't expose the FailedQueue class at the top-level.
This fixes #36.
13 years ago
Vincent Driessen 98ea29b15a Don't expose the Job class at the top-level.
This partially fixes #37.
13 years ago
Vincent Driessen 2b6101d110 Move job from Worker to Job test suite. 13 years ago
Vincent Driessen 15342f14d3 Store pickled function calls as strings.
This aids unpacking in the case of a function that isn't importable from
the worker's runtime. The unpickling will now (almost) always succeed,
and throw an ImportError later on, when the function is actually
accessed (thus imported implicitly).

The end result is a job on the failed queue, with exc_info describing
the import error, which is tremendously useful.
13 years ago
Vincent Driessen 14ecb8e956 Add specifics on the "ImportError" to the message in case of an attribute error. 13 years ago
Vincent Driessen be8f7684aa Fix accidentally passing unit test. 13 years ago
Vincent Driessen 3c05f20d95 Flake8. 13 years ago
Vincent Driessen 844c5ed8c7 Add @slow wrapper to avoid running slow tests.
Use ./run_tests -f to only run the fast tests.
13 years ago
Vincent Driessen 91fff48389 Flake8. 13 years ago
Vincent Driessen e807748ee6 Test the timing out of jobs.
Really looking for a way to speed up this test.  It takes up a whole
second doing nothing now, really.
13 years ago
Vincent Driessen 9ac9c23412 Flake8. 13 years ago
Vincent Driessen 7ef3b5ade8 Cleanup job hashes for jobs without result, too. 13 years ago
Vincent Driessen f07d28db86 Organize test fixtures into a separate file. 13 years ago
Vincent Driessen 5717a0ba15 Rename Job.for_call() -> Job.create().
This fixes #34.
13 years ago
Vincent Driessen 7e0b843d06 Implement requeue() method on FailedQueue. 13 years ago
Vincent Driessen 8e85c7eee3 Put Job directly in the top-level `rq` module. 13 years ago
Vincent Driessen 06ce9622ea Add compact() method on Queues, to remove dead messages. 13 years ago
Vincent Driessen 80a615a61c Flake8 style fixes. 13 years ago
Vincent Driessen e4055ca42f Allow queues to be emptied. 13 years ago
Vincent Driessen 9e33e1a08f Implement a cancel() method on jobs.
This fixes #29.
13 years ago
Vincent Driessen 53f55ba986 Flake8 style fixes in the test suite. 13 years ago
Vincent Driessen 11c7dbb376 Consistently renamed "failure" -> "failed" queue.
Fixes #28.
13 years ago
Vincent Driessen 7bda1ca969 Encapsulate the result property (it should not directly be set). 13 years ago
Vincent Driessen 8da204f74a Always use cPickle, never 'regular' pickle.
This fixes #18.
13 years ago
Vincent Driessen 9318825429 Abstract away from the concrete pickle implementation.
Choose cPickle, if available, for best performance.
13 years ago
Vincent Driessen 39f106cdb3 Have the test suite find an empty Redis database.
Since the test suite `flushdb()`'s after running each test, we should
make sure the database is empty before we even start running tests.
This patch will make sure to never destroy any local production data
inside the running Redis instance.

This fixes #25.
13 years ago
Vincent Driessen e05acfedce Fix putting jobs on the failure queue when they fail. 13 years ago
Vincent Driessen 7c903e45ef Simplify the persistence of jobs.
Fixes #23 and #24.
13 years ago
Vincent Driessen 370399f8f7 CHECKPOINT: dequeue_any now returns the queue that was popped from. 13 years ago
Vincent Driessen f516f8df2e CHECKPOINT: Handle failing and unreadable jobs.
Failing (or unreadable) jobs are correctly put on the failure queue by
the worker now.
13 years ago
Vincent Driessen b1650cb9b9 CHECKPOINT: Second part of the big refactoring.
Jobs are now stored in separate keys, and only job IDs are put on Redis
queues.  Much of the code has been hit by this change, but it is for the
good.

No really.
13 years ago
Vincent Driessen 65105b44c3 CHECKPOINT: Initial part of the big refactor. 13 years ago
Vincent Driessen 7fff52d99c Get rid of ugly custom assertion. 13 years ago
Vincent Driessen fcca48a9d7 Rename empty property -> is_empty() method. 13 years ago
Vincent Driessen fdce187c27 Putting failed jobs on the failure queue. 13 years ago
Vincent Driessen 7eb8d92605 Put unreadable tasks on the failure queue. 13 years ago
Vincent Driessen 0be1cb6ac0 Change the way jobs are pickled.
There is no job tuple anymore, but instead Jobs are picklable by
themselves natively.  Furthermore, I've added a way to annotate Jobs
with created_at and enqueued_at timestamps, to drive any future Job
performance stats.  (And to enable requeueing, while keeping hold of the
queue that the Job originated from.)

This fixes #17.
13 years ago
Vincent Driessen 0503eb2829 Clarified responsibility of the Job class.
The Job itself has nothing to do with queueing and dequeueing, so the
DequeueError wasn't appropriate here, either.
13 years ago
Vincent Driessen 1f64157c38 Broke down tests into multiple files. 13 years ago
Vincent Driessen 210477c2ab Throw DequeueError when reading unprocessable data from queue. 13 years ago
Vincent Driessen 2c72d94ebd Run class initializations only once. 13 years ago
Vincent Driessen 068db4cb35 Shut up logbook during tests. 13 years ago
Vincent Driessen aecb0a1bf0 Simplify calling .work() or .work(burst=True). 13 years ago
Vincent Driessen 213ac73e19 Remove blinker dependency. 13 years ago
Vincent Driessen fd3831f8f2 Fix b0rken test case due to new naming conventions. 13 years ago
Vincent Driessen d780c929c0 Change semantics of work(). Add work_burst().
work() will now start the worker run loop, and work_burst() now leads to
the burst-then-quit behaviour.
13 years ago
Vincent Driessen b4c1c85276 Add equality and comparison methods. 13 years ago
Vincent Driessen a5ea45af57 Make the dequeue methods return values consistent.
I merely refactored the internal calls. No external API changes have been made in this commit. In order to make the dequeueing methods consistent, each dequeue method now returns a Job instance, which is just a nice lightweight wrapper around the job tuple.

The Job class makes it easier to pass the method call info around, along with some possible meta information, like the queue the job originated from.

This fixes #7.
13 years ago
Vincent Driessen 1c9fa66bc1 Greatly simplify the setup.
Jobs don't even need to be tagged.  Any function can be put on queues.
13 years ago
Vincent Driessen 62b6b180f3 Also allow args and kwargs to enqueue() calls on Queue. 13 years ago
Vincent Driessen 159eba6df2 Add arg to test case. 13 years ago
Vincent Driessen fc5097ce7a Better test naming. 13 years ago
Vincent Driessen 196a9815d2 Add dequeue method to Queue. 13 years ago
Vincent Driessen b5e0377eb0 Allow jobs to be declared without a default queue.
This makes it impossible to use delay() on them.  Instead, you should
use enqueue().
13 years ago
Vincent Driessen 407f3e8b38 Add ability to put work on alternate queues. 13 years ago
Vincent Driessen 1b8da4a861 Add test for putting work on queues. 13 years ago
Vincent Driessen d721f0708b Refactor the whole Redis connection stuff to be just as easy as in RDB. 13 years ago
Vincent Driessen 05e83c5231 Add a very minor beginning to the test cases. 13 years ago
Vincent Driessen c45e056786 Add some project meta stuff. 13 years ago