1128 Commits (af2dfb14460db9d0c7883c6b9381bd06e3ab607d)

Author SHA1 Message Date
Marcus Martins 5b8726ad2d Fixes #502
Fixes some broken tests and misbehaviour with ttls. There was a temporal
coupling between saving the job and setting its expires parameter.
10 years ago
Selwin Ong f370f79819 Merge pull request #534 from selwin/registry-maintenance
Worker automatically cleans job registries every hour
10 years ago
Neal Todd bac6699ea4 Allow non-ASCII characters in keyword arguments. 10 years ago
Selwin Ong c3767e28e2 Worker now runs maintenance tasks every hour and on startup. 10 years ago
Selwin Ong 5782ac10c4 Added worker.clean_registries(). 10 years ago
Selwin Ong faf9d3e668 Added clean_registries(queue) function to clean job registries related to that queue. 10 years ago
RyanMTB 9a00b0eca6 Updated Worker API 10 years ago
Selwin Ong d51f0200d7 Merge pull request #513 from trevorprater/master
Improving logging.
10 years ago
Selwin Ong 70d5f971bd Jobs from FinishedJobRegistry that are moved to FailedQueue should have "failed" as status. 10 years ago
Cosmin Stefan 260f7caf66 Enable proper setup of signale handlers for SimpleWorker as well. fixes #523
This allows a SIGTERM to make the worker perform a warm shutdown and cleanly break out of the loop and finish the current job, if any.
10 years ago
Vincent Driessen 8f7322ed10 This is 0.5.2 10 years ago
Trevor Prater 5674edad61 Changed rqworker shutdown message.
- As requested by @nvie and @selwin.
10 years ago
Trevor Prater fd1dca40b9 Improving logging.
- Include worker key in worker startup log statement.
- Added a notification to make it more clear when a 'burst' worker dies.
10 years ago
Selwin Ong cff6fbff41 Merge pull request #477 from glaslos/ttl_tests_fixes
TTL tests and fixes
10 years ago
glaslos 071c47dacb hard-coded TTL to -1 on job.perform()
Removed merge artifacts
10 years ago
Serhii Maltsev 91f263d8e0 change try/except in python2/3 compatibility to to_text() 10 years ago
Tamir Duberstein 985a2664a4 Prevent `Queue#dequeue` from blowing the stack
In the case of many sequential jobs having been deleted, a recursive
implementation of `Queue#dequeue` is prone to blowing the stack in the
absence of tail-recursion support. Change the implementation from
recursive to iterative to work around this issue in CPython.
10 years ago
Vincent Driessen 5cb873b438 Fix PEP8 complaint. 10 years ago
Vincent Driessen cd155299a4 Fix PEP8 complaint. 10 years ago
Vincent Driessen 6c6e53542f Don't require redis-py 2.10 just for the SSL option. 10 years ago
Vincent Driessen 8505198298 Bump to 0.5.1. 10 years ago
Vincent Driessen 5990fa9d73 Merge pull request #499 from vladkens/issue/498
ZADD bugfix
10 years ago
Eric Bustarret 9fba806662 Add REDIS_SSL option
Allow the worker to connect to a Redis instance through SSL (ex: Azure
Redis Cache use SSL only by default)
10 years ago
Vlad Pronsky 933e6697cd Fixed redis drivers bug 10 years ago
glaslos 3d4d6a86d5 persist the job right before execution 10 years ago
glaslos 24d5e08992 Merge branch 'master' into ttl_tests_fixes
Conflicts:
	tests/test_job.py
10 years ago
Selwin Ong 30b21ef06e Merge pull request #465 from marklap/workerbirthdeath
add birth_date and death_date properties to Worker
10 years ago
Mark LaPerriere 636a537fa7 updates addressing @selwin comments for PR #465 10 years ago
Taras Semenenko 3dfd044767 Add missed `multi` command after `watch`
`watch` command should be used in conjunction with `multi` command
which was missed in enqueuing of job with dependencies.
Fix #487
10 years ago
Bradley Young 04e403e1a3 dread comma, I adjure thee. 10 years ago
Bradley Young d56b5424c8 merging master and fixing conflicts 10 years ago
Bradley Young c428f955e4 per @selwin, adding a deprecated handler for exc_handler 10 years ago
alternativshik 219f21b637 Allow non-ASCII characters in arguments
get_call_string() failed if any arguments contained non-ASCII strings.

Fixes #406
10 years ago
Selwin Ong 1005222371 Restored the ability to specify connection params in config 10 years ago
glaslos c155918d6d lrem only first occurrence of the job id (we expect only one) 10 years ago
Mark LaPerriere a4ca4704ac convert redis returned bytes into text/string 10 years ago
Mark LaPerriere cfe3da287a updated branch to latest 10 years ago
Vincent Driessen b8d425b318 Various PEP8 fixes. 10 years ago
Vincent Driessen fac2b10309 Auto-sort imports using isort. 10 years ago
Vincent Driessen e8c3b96a5a Bump to 0.5.0. 10 years ago
glaslos 703ab0e355 removed merged comment 10 years ago
glaslos 646f1cda22 Merge branch 'master' into ttl_tests_fixes
Conflicts:
	rq/queue.py
10 years ago
glaslos 5b5ab4860f passing on the ttl 10 years ago
Bradley Young f05d77b92b changing "default" for exception_handlers to None; same exact logic can be implemented, but cleaner 10 years ago
Bradley Young d3e4fb567b merge && updates to add multiple exception handlers. 10 years ago
Bradley Young f575137612 updating worker to have exception_handlers 10 years ago
Selwin Ong dac0be6cc7 Added DeferredJobsRegistry to keep track of deferred jobs. 10 years ago
Selwin Ong 3e674fbe6a queue.enqueue() should set job.origin. 10 years ago
Selwin Ong 9320496402 Simplify FailedQueue.quarantine and ensure that a deferred job's status is set to Queued when enqueued. 10 years ago
Selwin Ong 7fd2ac8ca6 Added "DEFERRED" Job status for jobs that have unsatisfied dependencies. 10 years ago
Vincent Driessen dc5cd514ee Explicitly cast map() result to a list, for Python 3 compat. 10 years ago
Selwin Ong dc09676ee0 Minor copywriting fixes. 10 years ago
Selwin Ong 01ab2f20dd Minor copywriting fixes. 10 years ago
Vincent Driessen 543bcbc60b Explicitly cast map() result to a list, for Python 3 compat. 10 years ago
Selwin Ong eae2c40ea0 Merge pull request #457 from jlopex/block_until_horse_finishes
Make parent worker process wait until horse process finishes
10 years ago
Selwin Ong 0a0a81da6d Merge pull request #463 from conslo/skip-queue
Skip queue
10 years ago
Mark LaPerriere e6c32edad9 add birth_date and death_date properties to Worker 10 years ago
Jonathan Tushman 1ae5a12a81 merging master 10 years ago
Jonathan Tushman ccd41396f6 adding suspend with duration test 10 years ago
Travis Johnson add4d625b6 Merge branch 'nvie' into skip-queue
Conflicts:
	rq/queue.py
10 years ago
Vincent Driessen cd0c3c9c1e Merge pull request #462 from conslo/worker-hash
Worker hash
10 years ago
Jonathan Tushman 82333d2ad5 triggering shutdown by setting a redis flag 10 years ago
Travis Johnson db75958ad2 use 'at_front' instead of 'skip_queue' 10 years ago
Selwin Ong e1801c5c44 Merge pull request #453 from glaslos/job_ttl
TTL for jobs
10 years ago
Travis Johnson ac61f502a1 skip_queue functionality 10 years ago
Travis Johnson f60e4884df a comment typo 10 years ago
Travis Johnson 0ad4cb3410 comments 10 years ago
Travis Johnson c301369c2e implement __eq__ and __hash__ for workers 10 years ago
Nic Cope 09cab7a90d Allow maximum job age to be specified when cleaning up or getting expired jobs from a registry.
This ensures that all jobs cleaned from a started registry end up in the failed queue.
10 years ago
Javier Lopez fc5295edfc Set busy state on parent while waiting for horse 10 years ago
Nic Cope 6ab7070a92 Rename registry timeout to registry ttl
This matches job.cleanup() better and (I think) makes the purpose slightly clearer.
10 years ago
Nic Cope 9f699d758d Any negative number should cause a job to live forever in a registry.
While the documentation explicitly mentions ttl=-1, this matches better the behaviour of the job.cleanup() method.
10 years ago
glaslos c6a83eaa82 calling self.cleanup to set job expiration 10 years ago
glaslos 8a3fd91e2e renaming job.job_ttl to job.ttl 10 years ago
Selwin Ong 2091c601b1 Merge pull request #451 from conslo/depend-on-unsaved-job-ids
Depend on unsaved job ids
10 years ago
Nic Cope 8fa184b86b Ensure the FinishedJobRegistry honors an 'infinite' result_ttl of -1 10 years ago
glaslos 55c541bc59 added job ttl to queue.enqueue() 10 years ago
Travis Johnson af4b0436c1 instantiate a job instead of fetch
this removes the need for the depended on job.id already being saved
10 years ago
Travis Johnson 14d1186241 use internal job_class for check 10 years ago
Bradley Young 5caccaabfe Adding optional list handling to the exc_handler option in Worker.
Adding command line --exception_handler option (with multiple entries allowed) to `rq worker`
Added tests for command line options.
10 years ago
Travis Johnson 3467868f1f allow depends_on to be a job id or a job itself
Other parts of the code (i.e.: the `.create()` method) allow the `depends_on` kwarg to be a `Job` object *or* a job id. This is an attempt to allow that same idea within the `.enqueue_call()` method for a queue. Since this part of the code requires actually knowing the precise redis key for the job that's depended on, my intuition is that a `.fetch()` is the only way to solve this.
10 years ago
Selwin Ong 0dbe68527c Merge pull request #431 from negz/worker-redis-bug
Pass the default worker connection into the started and finished registries
10 years ago
Adam Wen f5001a0e36 fix decode error in py3. 10 years ago
Adam Wen 1795e1ee53 fix decode 10 years ago
Adam Wen cd0230cae3 make job description unicode friendly 10 years ago
Nic Cope de0b501823 Pass the default worker connection into the started and finished registries
In practice all the registry methods are called with pipelines, but if no
connection is passed in when instantiating the registry and the connection
stack is empty resolve_connection will raise NoRedisConnectionException.
10 years ago
zhangliyong 6621105bde Use type instead of default to specify interval option type 10 years ago
zhangliyong 3d49784bcc Merge branch 'master' of github.com:nvie/rq into cli-rq-worker 10 years ago
Selwin Ong 2307bc8253 Added FinishedJobRegistry to monitor finished jobs. 10 years ago
Selwin Ong 74a9982ecb Fixed a bug where expired jobs aren't deleted from JobStartedRegistry. 10 years ago
Selwin Ong 18c6ea64ef Merge pull request #419 from selwin/registry-len
Added JobStartedRegistry.count
10 years ago
zhangliyong f9511664c8 Make flake8 happy :) 10 years ago
zhangliyong 1b39996bf7 Make pep8 10 years ago
zhangliyong c6033b312e Cleanup 10 years ago
zhangliyong 6510bb46f3 Fix interval type bug, it should be float 10 years ago
zhangliyong 21c14c0e21 Cleanup 10 years ago
zhangliyong 4d91f136f8 Move redis url default value to connect function
So worker subcommand can retrieve redis url from config file if url
option value is None, otherwise url option value will never be None.
10 years ago
zhangliyong 4df076f3aa Retrieve url from config file 10 years ago
zhangliyong 229a00fee5 Cleanup 10 years ago
zhangliyong 88fe5124d8 Make pythonic 10 years ago
zhangliyong 907e71dc86 Make pythonic 10 years ago
zhangliyong f10c749b7c Use click's evvar to retrieve SENTRY_DSN environment value 10 years ago
zhangliyong 842f27294a Convert rqworker to 'rq worker' subcommand 10 years ago
zhangliyong 7b434a32eb Let cleanup_ghosts accept conn argument 10 years ago
Selwin Ong 202be75b21 Merge pull request #415 from foxx/feature/custom-job-ids
Allow job ID to be set on enqueue/enqueue_call() - fixes #412
10 years ago
Selwin Ong c1dc30eae3 Added __len__ method to Queue. 10 years ago
Selwin Ong fae7df5aa7 Renamed StartedJobRegistry.get_job_count to StartedJobRegistry.count for consistency. 10 years ago
Selwin Ong 41ae1ce8a7 Added a registry.get_job_count(). 10 years ago
foxx 30ea76ddd6 Fixed silly typo 10 years ago
foxx 0466562a13 Fixes from comments in #415
Added tox/vagrant tmp dir to gitignore
Removed unused import
Renamed id to job_id in enqueue_call() as per comments in #415
10 years ago
Vincent Driessen 783b6f9ec7 Fix PEP8 complaint. 10 years ago
Vincent Driessen 7686785d61 Merge branch 'selwin-working-queue'
Conflicts:
	tests/test_worker.py
10 years ago
Vincent Driessen 4b7c59d68d Fix PEP8 complaints. 10 years ago
Selwin Ong 6d79082b62 Call move_expired_jobs_to_failed_queue before returning job_ids. 10 years ago
Selwin Ong 9341a4a33d Renamed WorkingQueue to StartedJobRegistry. 10 years ago
Selwin Ong 2e96148b31 Fixed Python 3 tests for "WorkingQueue". 10 years ago
Selwin Ong 60c7a3cc6e working_queue.remove call should be pipelined. 10 years ago
Selwin Ong 4d90cc062e Add job to WorkingQueue before execution and remove from WorkingQueue after. 10 years ago
Selwin Ong b0c0a84ab0 Moved some logic into worker.prepare_job_execution to make things testable. 10 years ago
Selwin Ong a28575088b Implemented WorkingQueue.cleanup(). 10 years ago
Selwin Ong 3dc008d090 Added WorkingQueue class. 10 years ago
foxx b6499ce71c Fixed another py3 bug - my bad. Also moved type checking further down 10 years ago
foxx f5779c194f Renamed job_id to id, and fixed py3 bug, per #415 10 years ago
Vincent Driessen 9ab46804c6 Merge pull request #417 from foxx/feature/testworker
Added test worker for unit tests - fixes #413
10 years ago
foxx 52c3ad0fbf Renamed to SimpleWorker 10 years ago
foxx 16ee71f26d Use class for test worker, and performs PID check in unit tests, #412 10 years ago
Vincent Driessen b5fbc3992b Restructure new CLI modules.
A few things have changed.  First of all, there is no separate copy of
the argparse-based `rqinfo` anymore.  It now fully utilizes the new
Click subcommand.  In other words: `rqinfo` and `rq info` both invoke
the same function under the hood.

In order to support this, the main command group now does NOT take
a `url` option and initializes the connection.  Besides supporting this
alias pattern, this change was useful for two more reasons: (1) it
allows us to add subcommands that don't need the Redis server running in
the future, and (2) it makes the `--url` option an option underneath
each subcommand.  This avoids command invocations that look like this:

    $ rq --url <url> info --more --flags

And instead allows us to pass the URL to each subcommand where it's
deemed necessary:

    $ rq info --url <url> --more --flags

Which is much friendlier to use/remember.
10 years ago
Vincent Driessen 652cd71d2b Merge branch 'zhangliyong-cli-rq' 10 years ago
Vincent Driessen 5c96c61255 Change `rq requeue` subtly, mostly docs and vars. 10 years ago
Vincent Driessen 07dda74710 Change options of the `rq empty` command.
* Does not ask confirmation
* Does not need `--yes` option anymore
* Added --all, to clear all queues
* No implicit emptying of the failed queue.  If you want to empty the
  failed queue, just use `$ rq empty failed`
10 years ago
Vincent Driessen 8f1e066f15 Various little style fixes. 10 years ago
Vincent Driessen fc803f5d0d Fix various flake8 complaints. 10 years ago
foxx 2753f17e8e Fixed bug with format() in py3 10 years ago
foxx 72bc9e37b7 Forced job_id to only allow str/unicode 10 years ago
foxx 6bb8b26114 Allow job ID to be set on enqueue/enqueue_call() - fixes #412 10 years ago
Selwin Ong 21620e98ca Merge pull request #411 from selwin/fix-exception-handler
Don't pass "args" into logging call
10 years ago
zhangliyong 3eabe76690 Move back rqinfo command for backward compatibility 10 years ago
zhangliyong 4248c934ab Remove unused function 'gettersize' 10 years ago
Selwin Ong 7cf8ef42d1 Don't pass "args" into logging call. 10 years ago
zhangliyong ae1681e7a0 Change doc of rq cli 10 years ago
zhangliyong de471b70b6 Merge branch 'master' of github.com:nvie/rq into cli-rq 10 years ago
zhangliyong f734708ad4 Make pythonic 10 years ago
zhangliyong 5670f251d8 Add '--all' option and [JOB_IDS] argument to specify what to requeue 10 years ago
Dave Bonner 6eea986012 allow queue class to be overriden from command line
use the same mechanism as the override for worker class.
10 years ago
zhangliyong 37748e5ace Make pep8 10 years ago
zhangliyong 1c97a55064 compat str.format syntax with py26 10 years ago
zhangliyong 0c4e28bd62 Use 'with Connection' instead of 'use_connection' 10 years ago
zhangliyong 1e5a8b58a1 Use -y option to confirm emptying failed queue by default 10 years ago
zhangliyong c90da5336e Avoid using use_connection, initial queues directly using redis connection 10 years ago
zhangliyong adc24b6fe0 Fix import error 10 years ago
zhangliyong 551483b477 Add rq info command 10 years ago
zhangliyong 81febc6dc5 Format empty help message 11 years ago
zhangliyong f845ae25a2 Make command empty help message friendly 11 years ago
zhangliyong 36880db872 Show progressbar when requeuing 11 years ago
zhangliyong e1d236ec02 Use click.echo instead of print to output 11 years ago
zhangliyong 7f3cb8e785 Merge branch 'master' into cli-rq 11 years ago
zhangliyong 07aea5e5c1 Add CLI `rq` to empty queues and requeue failed jobs 11 years ago
INADA Naoki 4fb2914c6f Easy refactoring on decorators.py 11 years ago
Selwin Ong b05c2052e1 Capture more data when logging errors. 11 years ago
Vincent Driessen 3de8a47f06 Merge pull request #390 from selwin/pipeline-dependency-registration
job.register_dependency() should support pipelining
11 years ago
Selwin Ong fc19a64670 job.register_dependency() should support pipelining. 11 years ago
Vincent Driessen b91b89a183 Use highest pickle protocol version to serialize job data. 11 years ago
Vincent Driessen 79db282879 Support enqueueing callable classes.
Fixes #388.
11 years ago
Vincent Driessen 865efd6e8c Leave setting the state to the worker, not the Job itself.
Should fix #389.
11 years ago
Vincent Driessen eb6fb27281 Change confusing method name. 11 years ago
Vincent Driessen 6299af15fc Merge branch 'master' of github.com:nvie/rq 11 years ago
Vincent Driessen d37f49f643 Merge branch 'andrewsg-warnings' 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 2ab7276230 Merge pull request #377 from selwin/logging-fix
Only add logging handler if nothing is configured
11 years ago
Selwin Ong 638211df20 job.cancel() should remove itself from queue. 11 years ago
Selwin Ong b828078dde Fixed default logging level in setup_loghandlers. 11 years ago
Selwin Ong 92fb787a69 Only add logging handler if nothing is configured. 11 years ago
Scott Vitale b464c37468 Use as_text to fix syntax error discovered in Python 3.2 (raspberry pi) 11 years ago
David Bonner e2f398be80 fix --worker-ttl command line arg
Make sure it's converted to an int, since the rest of the code expects it to be.  Without this patch, trying to use that argument gets you something like this:

(cogo)[dbonner@bonnervm18 syseng]$ rqworker --worker-ttl 86400
21:52:07 RQ worker started, version 0.4.6
Traceback (most recent call last):
  File "/opt/cogo/bin/rqworker", line 9, in <module>
    load_entry_point('rq==0.4.6', 'console_scripts', 'rqworker')()
  File "/home/dbonner/src/github/rq/rq/scripts/rqworker.py", line 102, in main
    w.work(burst=args.burst)
  File "/home/dbonner/src/github/rq/rq/worker.py", line 354, in work
    timeout = None if burst else max(1, self.default_worker_ttl - 60)
TypeError: unsupported operand type(s) for -: 'str' and 'int'
11 years ago
Selwin Ong 8095a565ac rqworker script should accept "--job-class" parameter. 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
Andrew Gorcester 17a4ed056d use warnings.warn() instead of raise for DeprecationWarning 11 years ago
Vincent Driessen 6644872273 Raise warning when using async Sentry transport. 11 years ago
Vincent Driessen 2314b62d8c Start release 0.4.6. 11 years ago
Vincent Driessen f0e02996bc Use single quotes for string literals. 11 years ago
Vincent Driessen 0fbc9e4851 Release 0.4.5. 11 years ago
Marko Mrdjenovic 78b8d2a6ef kwargs must be strings, unicode fails with "keywords must be strings" 11 years ago
Vincent Driessen 972b367af4 Release 0.4.4. 11 years ago
Vincent Driessen 83382f51d0 PEP8ify. 11 years ago
Vincent Driessen c263f8f600 Fix regression introduced in 0.4.3. 11 years ago
Vincent Driessen c0567be69a Release 0.4.3. 11 years ago
Vincent Driessen fba11aac91 Merge branch 'SanyerMyasoedov-master' 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 b048e23875 Merge pull request #342 from friedcell/master
make job class dynamic
11 years ago
Vincent Driessen ab9e6b852e Fix PEP8 complaints. 11 years ago
Vincent Driessen 38ec259b6e Enable the most modern Python syntax. 11 years ago
Vincent Driessen 4746602c57 Explicit string check in Job constructor. 11 years ago
Vincent Driessen 9def988a85 Flip conditional sides of helper definitions (no semantic change). 11 years ago
Marko Mrdjenovic 5cba260cca Job and Queue classes as variables (compatible with existing naming) 11 years ago
msoedov e76020d894 Removed @resolve_connection from job decorator.
-- resolve_connection already presence inside Queue __init__.
11 years ago
msoedov b4bccb2d31 Moved @resolve_connection call into @delay wrapper 11 years ago
Marko Mrdjenovic 67dd1cbf34 make job class dynamic for more hackability 11 years ago
Vincent Driessen ef9456ddbd Bump version to 0.4.2. 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
Vincent Driessen 415662d42c Bump version. 11 years ago
Vincent Driessen e60584ef76 Use single quotes for string literals. 11 years ago
Vincent Driessen dfd23d6fb8 Fix bug where RQ 0.4 could not unpickle jobs from RQ 0.3.x. 11 years ago
Vincent Driessen 39258e2c15 Release 0.4.0. 11 years ago
Vincent Driessen aef7af9c77 Merge pull request #334 from nvie/emptying-failed-queue
Emptying failed queue
11 years ago
Vincent Driessen 7ea106e50e Merge pull request #333 from selwin/explicit-args
Rearranged how explicit kwargs are passed into queue.enqueue(). Fixes #322
11 years ago
Vincent Driessen cb34acc279 Add rqinfo -X command.
This can be used to empty the failed queue right from the command line.
11 years ago
Vincent Driessen 4d9c20d5d9 Reimplement Queue.empty() in a Lua script.
This makes the .empty() function perform all the computing in Redis
itself, rather than in Python.  This is both atomic, and faster.
11 years ago
Vincent Driessen 057c4657ef Fix whitespace. 11 years ago
Vincent Driessen fdf4abcf69 Fix pipeline call. 11 years ago
Selwin Ong 4f918041e3 Rearranged how explicit kwargs are passed into queue.enqueue(). Fixes #322 11 years ago
Tomas Hanacek 6494233058 rqworker default arguments of socket, worker_ttl, results_ttl bugfix 11 years ago
Vincent Driessen 35d839f4e2 Merge pull request #330 from selwin/death-penalty
Job timeouts are now handled by "worker.death_penalty_class"
11 years ago
Vincent Driessen 3649ff863b Don't rely on external package `first`. 11 years ago
Selwin Ong 7eb6c2ab9f Job timeouts are now handled by "worker.death_penalty_class". 11 years ago
Vincent Driessen a55be12864 Merge branch 'malthe-default-to-environment-args' 11 years ago
Vincent Driessen 3667e37ed3 Don't expose the envvar values through `rqinfo -h`. 11 years ago
Vincent Driessen 1ada3462dd Merge pull request #329 from olingerc/workonrqinfo
Use get_state() instead of .state in rqinfo
11 years ago
Christophe Olinger e16b89de3b Use get_state() instead of .state in rqinfo 11 years ago
Malthe Borch e77b3e8a21 Pull argument parser defaults from environment variables. 11 years ago
Selwin Ong 835c353380 Job status should be updated during job.perform(). 11 years ago
Selwin Ong 57990fa052 Simplify worker.work() by moving some functionalities to relevant methods. 11 years ago
Selwin Ong f5c3c9a6dd Deprecate job.status. 11 years ago
Selwin Ong 72457d2286 Added DeprecationWarning to worker.state. 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
Selwin Ong 1b3832adb5 Merge branch 'master' of https://github.com/mbr/rq into worker-get_job_id
Conflicts:
	rq/worker.py
11 years ago
Selwin Ong 37376cfe42 Deprecate worker.state. 11 years ago
Vincent Driessen 383ffa464f Merge branch 'rdooley-master' 11 years ago
Vincent Driessen d2bbd31c59 Fix some flake8 complaints. 11 years ago
Vincent Driessen f7e2375b36 Remove two-char short args.
In UNIX, this would mean the shorthand notation for `-w -t`, which is
confusing and conflicts with the existing `-w` and `-t` flags.  Instead,
if you need this, you'll have to spell the flag name out because we've
run out of chars that make sense.
11 years ago
Vincent Driessen c7498b2066 Merge pull request #312 from selwin/rename-fork_and_perform
Renamed Worker.fork_and_perform_job to Worker.execute_job.
11 years ago
Malthe Borch ad529e2609 Add repr for (showing id and enqueue time). 11 years ago
Selwin Ong 2044e790f5 Renamed Worker.fork_and_perform_job to Worker.execute_job. 11 years ago
Rees Dooley fb65e321ed Changed timeout to results_ttl. Added similar worker_ttl param 11 years ago
Rees Dooley f8e775a784 Results timeout arg added to rqworker 11 years ago
Marc Brinkmann e81ee5b672 Update worker.py
Use docstring instead of comment. Sorry.
11 years ago
Vincent Driessen 9ad7da684c Merge branch 'KanbanSolutions-use-pipeline-context' 11 years ago
Vincent Driessen d0381e98ee Fix .pipeline -> ._pipeline.
This makes sure it's compatible with both Redis and StrictRedis back
ends.
11 years ago
Sylvain Zimmer f0a3dd262e Added connection argument to get_current_job() 11 years ago
Dj Gilcrease fd036538f7 Wrap the perform_job try/except in a pipeline context so the pipeline connection is properly refrshed after the work is done 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
Vincent Driessen 66a554bc29 Change AssertionError to proper TypeError. 11 years ago
Malthe Borch ce3924c901 Just use a regular private method along with 'property'. 11 years ago
Malthe Borch c898fe618e Move seemingly general purpose decorator into class scope, use and delete.
Also, reduce repeat attribute declarations, at the cost of a
requirement that decorated functions appear in the right order.
11 years ago
Malthe Borch ba0b39a43b Unpickle job data lazily. This fixes issue #294. 11 years ago
Vincent Driessen 888d771d4d Merge pull request #287 from malthe/shed-times-dependency
Remove dependency on 'times' library (issue #286).
11 years ago
Selwin Ong c02bf3d6aa Merge pull request #289 from acmerfight/master
delte Unused variable 'prefix'
11 years ago
Vincent Driessen e1e2405150 Merge branch 'hotfix-0.3.13'
Conflicts:
	CHANGES.md
11 years ago
Vincent Driessen aa55232151 Bump version to 0.3.13. 11 years ago
Vincent Driessen b52089ede1 Fix NameError.
This was the result of a faulty merge. I'm sorry.
11 years ago
Vincent Driessen cf98591ca5 Merge branch 'hotfix-0.3.12'
Conflicts:
	CHANGES.md
	rq/worker.py
11 years ago
Vincent Driessen b5e1377023 Bump version to 0.3.12.
Conflicts:
	CHANGES.md
11 years ago
Vincent Driessen d0fa35dc66 Python 2.6 fix. 11 years ago
Vincent Driessen 8414a67d65 Fix bug where worker died from monitoring views.
Fixes #288.

Conflicts:
	rq/worker.py
11 years ago
Andy Yao 31830120f8 delte Unused variable 'prefix' 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
Vincent Driessen 9abbfc4dfb Use kwarg to specify connection. 11 years ago
Malthe Borch 1792a194bd Should pass a connection here because we might not be using a connection stack. 11 years ago
Joshua Chia ef2bbe762b Minor cleanup: Use Status enums instead of strings 11 years ago
reterVision c27cb5217c Remove duplicate function call. 11 years ago
Marc Brinkmann 3d0138d319 Added Worker.get_current_job() convenience method. 11 years ago
Marc Brinkmann c745f6811a Added job_id property, storing the id of the currently executing job. 11 years ago
Marc Brinkmann 606d4fa10f Add optional pipeline parameter to set_state. 11 years ago
Selwin Ong e4589a4641 job.cancel() should be pipelined. 11 years ago
reterVision b79fac8840 Fix typo in Doc string. 11 years ago
Vincent Driessen af87cce382 Merge branch 'selwin-custom-worker' 11 years ago
Vincent Driessen 3546aae0c0 Let's keep things readable. 11 years ago
Selwin Ong 28dcb5dcd1 Renamed "--worker" flag to "--worker-class". 11 years ago
Selwin Ong 4ff038481f First stab at allowing user to specify a custom worker class. 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 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 5f6a1f0ac5 Empty the queue before deleteing the jobs, in case new jobs arrive 11 years ago
Mark Tozzi 0713ad03c2 Empty now deletes all jobs in the queue 11 years ago
Vincent Driessen 4dbbfc1d8f Merge pull request #252 from nvie/use-utc
Store birth and death values as UTC dates
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
Vincent Driessen aefa44b30c Store birth and death values as UTC dates. 11 years ago
Vincent Driessen d037696fc5 Merge branch 'asldevi-master' 11 years ago
Vincent Driessen eb5bb6329c PEP8ify. 11 years ago
Vincent Driessen 524fe15839 Merge branch 'pricingassistant-master' 11 years ago
Vincent Driessen 4d92079694 PEP8ify. 11 years ago
Vincent Driessen 537476b488 PEP8ify. 11 years ago
Vincent Driessen 1b558704d3 Fix: COMPACT_QUEUE should be a unique key.
This fixes #230.  Thanks, @sylvinus.
11 years ago
Sylvain Zimmer a296619074 Split Job.dump() and Job.save() 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 135b1ff10c Merge branch 'igungor-job-description' 11 years ago
Vincent Driessen 90fcb6c9d0 PEP8ify. 11 years ago
Vincent Driessen 57ea6203d1 Let's not change positional argument order.
This may break other people's programs.
11 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. 12 years ago
Vincent Driessen c427eda36c Bump version to 0.3.5. 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
Vincent Driessen 67880343f1 Make inner_exception optional, and use new except syntax. 12 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.
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 743cf3cd74 Merge branch 'vierja-ended_time' 12 years ago
Vincent Driessen 20d435a077 Prepare for 0.3.5. 12 years ago
Vincent Driessen f818fb5d43 Bump version to 0.3.4. 12 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.
12 years ago
Vincent Driessen 77fb32791d Include a copy of dictConfig in RQ, for Python 2.6 compat. 12 years ago
Vincent Driessen e29981a008 Bump to new development version. 12 years ago
Vincent Driessen 55bb32cb36 Release 0.3.3. 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
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.
12 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).
12 years ago
Selwin Ong 40d0a7d9a9 Removed __main__ that was accidentally added to rqworker script. 12 years ago
Selwin Ong d1f586b413 Only configure logging handlers if not already present. 12 years ago
Javier Rey d660b611db ended_at time is now saved when job is finished 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 ba57f104ff Switched config file loading to import lib to allow dotted "paths" to settings modules 12 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.
12 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.
12 years ago
Alexander Saltanov 0e638d795b Don't show traceback in rqinfo when ^C is pressed. 12 years ago
Vincent Driessen d80fa53d7e Ugh. Syntax. 12 years ago
Vincent Driessen 11794ccef5 Merge branch 'sburns-no-colorize-notty' 12 years ago
Vincent Driessen 435cbc0f53 Simplify a bit. 12 years ago
Scott Burns 59a01b49f4 Don't colorize non-tty stdout/err 12 years ago
Vincent Driessen 9ff5b18ebb Merge branch 'sburns-decorator-ttl' 12 years ago
Vincent Driessen 4e6b19d5ab Bump version number. 12 years ago
Vincent Driessen 5e59c6e28e Rename the const. 12 years ago
Scott Burns 538bbb1b55 Decorator accepts result_ttl argument 12 years ago
Timo Steidle 881b944283 Changed status "Running" into "started" to be more consistent with the other statuses 12 years ago
Timo Steidle 8787cfbb30 Added new job status "Running" 12 years ago
Vincent Driessen c0df77f84d Support QUEUES as a config setting in settings files. 12 years ago
Vincent Driessen 81270c8e59 Support REDIS_PASSWORD setting in settings. 12 years ago
Scott Burns c705a2f06a Expose Redis password to scripts
Allow rqworker and rqinfo to connect to
password-protected Redis hosts.
12 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.
12 years ago
Vincent Driessen 8cb6a21670 Only store custom properties when they're written to the meta dict. 12 years ago
Vincent Driessen a247c6eaa1 Merge branch 'master' into remove-logbook 12 years ago
Vincent Driessen 4b66d7af41 Merge branch 'master' into job-access-within-job
Conflicts:
	rq/job.py
12 years ago
Vincent Driessen 8581cd6463 Don't allow jobs without Redis connection.
And other connection-related fixes.
12 years ago
Vincent Driessen f9137311b5 Release version 0.3.2. 12 years ago
Vincent Driessen 2f578a4c2d Avoid dict comprehension for compatibility.
This fixes #128.
12 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.
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 a6e57dd7c0 Fix: change import path before importing settings module. 12 years ago
Vincent Driessen ce1da3f5ca Add support for configuration RQ workers with Sentry with a single flag.
This fixes #122.
12 years ago
Vincent Driessen 1687633c07 Add support for passing configuration files to rqworker.
This fixes #123.
12 years ago
Vincent Driessen 781f3e0460 Add test for custom exc handling. 12 years ago
Vincent Driessen db80be4ef7 Fix typos. 12 years ago
Vincent Driessen db4ec16be8 Also report job description. 12 years ago
Vincent Driessen 502bf59399 Add convenience directive to easily configure Sentry with RQ. 12 years ago
Vincent Driessen cdc3a6c7a9 Convenience exc_handler registration in __init__.
Allow custom exception handlers to be passed in in the Worker
constructor.
12 years ago
Vincent Driessen f457bd9da2 Remove incorrect arg to pop_exc_handler method. 12 years ago
Vincent Driessen daa8f38b4b Improve formatting of the exceptions on the console. 12 years ago
Vincent Driessen a20deb2c52 Add custom exception handling capabilities.
This fixes #95.
12 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
Vincent Driessen 5cbc59205a Add changelog and bump version to 0.3.0. 13 years ago
Vincent Driessen 1177caf4bf Set state to busy as early as possible. 13 years ago
Vincent Driessen f2d5ebf2fe Merge branch 'master' into selwin-warm-shutdown-2
Conflicts:
	rq/worker.py
13 years ago
Vincent Driessen 1536546613 Worker/horse distinction in signal handler is obsolete. 13 years ago
Vincent Driessen a6bb526773 Fix that doens't abort the currently running job on Ctrl+C. 13 years ago
Vincent Driessen 9bfd686be3 Merge hotfix/0.2.2 13 years ago
Vincent Driessen 4d9881eef2 Print version number when running the server. 13 years ago
Vincent Driessen 080431702d Bump the version. 13 years ago
Vincent Driessen 1bc0c3d223 Fix bug where pickling the return value caused an uncaught exception. 13 years ago
Selwin Ong a4f1de358f Raise a StopException when Control+C is pressed. 13 years ago
Vincent Driessen 4057ae768b Merge branch 'selwin-decorator' 13 years ago
Vincent Driessen 2cb058e91a PEP8ify. 13 years ago
Vincent Driessen d697ddb93a Resolve connections early.
Fixes #101.
13 years ago
Vincent Driessen dbf101bc06 Update comment. 13 years ago
Vincent Driessen a1d08a64fc Add @wraps() call. 13 years ago
Vincent Driessen 6b79e51033 PEP8ify. 13 years ago
Vincent Driessen ea19bdc910 Merge branch 'new-enqueue' into selwin-decorator 13 years ago
Vincent Driessen abac4a5f41 Since we only have the timeout option, don't be too generic. 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
Selwin Ong ae97f862dc Merge branch 'master' into decorator 13 years ago
Vincent Driessen f6374f2dfa Add new way of invoking .enqueue(), either implicitly or explicitly. 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
Vincent Driessen 8436d9b2c8 PEP8ify. 13 years ago
Selwin Ong bdc1af28d1 Added a job decorator. 13 years ago
Vincent Driessen a2b9c6ce86 Bump the version. 13 years ago
Vincent Driessen 1a178d673b Fix bug where results wasn't correctly unpickled when refreshing from Redis. 13 years ago
Vincent Driessen 987e8fe77f Bump version. 13 years ago
Vincent Driessen 0b66bbaab1 Merge branch 'sleekslush-master' 13 years ago
Vincent Driessen a032896453 Add means of specifying the job function using strings. 13 years ago
Vincent Driessen 84988bdf94 Fix typo.
This fixes #85.
13 years ago
Vincent Driessen 074af72536 Minor fix for empty dict check. 13 years ago
Selwin Ong 809874ee83 Don't store Job's "_instance" attribute in Redis. 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
Jonas c99cab71cd Use a non-zero exitcode on errors in scripts
When a worker can't connect to Redis, return
a non-zero exit code so supervisor processes
can act accordingly.
13 years ago
Jonas 415a159ac3 Pass connection explicitly to Job.fetch 13 years ago
Vincent Driessen 074d42fe54 Remove strict procname dependency.
This fixes #80.
13 years ago
Craig Slusher 2729b5435f Uses push_connection() and pop_connection() 13 years ago
Vincent Driessen 697a4a89f8 Actually use any given default_timeout for queues. 13 years ago
Vincent Driessen a5d9ed0a0d Add change notes. 13 years ago
Selwin Ong 50ba003cee Worker's "all" and "find_by_key" methods should accept "connection" as argument. 13 years ago
Vincent Driessen c423cab770 Bump version number. 13 years ago
Vincent Driessen 7c69ad9182 Bump the version number. 13 years ago
Vincent Driessen 11f91508c6 Merge pull request #63 from selwin/master
Queue.lpop now takes connection as an argument. Thanks, @selwin!
13 years ago
Selwin Ong 5989228330 Queue.lpop should take connection as argument. 13 years ago
Wichert Akkerman ec0e4776b4 Move common code out. 13 years ago
Wichert Akkerman 9f7d608da8 Renaming typo.. 13 years ago
Wichert Akkerman 2d4a58631d PyFlakes 13 years ago
Wichert Akkerman 97d2e4d784 Use console_scripts instead of scripts.
Unfortunately zc.buildout does not support distribute/setuptools script
option (see https://bugs.launchpad.net/zc.buildout/+bug/422724), but it
does support console_scripts. This also makes the scripts importable,
allowing for unittest and code reuse.
13 years ago
mattdennewitz 9f2f9e367c Class methods now use given "cls" 13 years ago
Vincent Driessen b886ba76de Fix AttributeError. 13 years ago
Vincent Driessen c337afde3a Make the connection stack thread safe.
For this, I've included Werkzeug's context locals, which offers both
thread and greenlet safe local variables.

This fixes #47.
13 years ago
Vincent Driessen 25d3f94c9f Use the true Python 2.7 stdlib implementation instead. 13 years ago
Vincent Driessen 4885458dde Move this hack to a separate file. 13 years ago
aiko1895 d26db69cbd added backport of total_ordering to work with 2.6 13 years ago
Vincent Driessen 100d23b72e Tag the first public release. 13 years ago
Vincent Driessen a7c229ddb1 Reflect new API in the RQ scripts. 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 6bc173f122 Bugfix. 13 years ago
Vincent Driessen 28216cf63a Implement the requeue_job() top-level API function.
This completely fixes #37.
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 0b837b4b12 Don't warn. In fact, we rely on this the more. 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 844c5ed8c7 Add @slow wrapper to avoid running slow tests.
Use ./run_tests -f to only run the fast tests.
13 years ago
Vincent Driessen 000849c430 Initialize jobs with timeouts. 13 years ago
Vincent Driessen b8305a818f Safer, and shorter, version of the death penalty.
This case protects against JobTimeoutExceptions being raised immediately
after the job body has been (successfully) executed.  Still,
JobTimeoutExceptions pass through naturally, like any other exception,
to be handled by the default exception handler that writes failed jobs
to the failed queue.

Timeouts therefore are reported like any other exception.
13 years ago
Vincent Driessen 8a856e79ea Initial attempt at job timeouts. 13 years ago
Vincent Driessen fb587297f6 Requeue should not error when called on a deleted job ID. 13 years ago
Vincent Driessen 7ef3b5ade8 Cleanup job hashes for jobs without result, too. 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 240d2d941d Extracted method.
This makes the act of moving failed jobs to the failed queue
responsibility of the FailedQueue itself, not of the Worker.

This fixes #32.
13 years ago
Vincent Driessen d64ad225eb Make FailedQueue a full subclass of Queue.
We will add special methods on it in the future.

This fixes #33.
13 years ago
Vincent Driessen 6f05e03293 Clean up some of the dummy jobs used for testing.
Also, add a random_failure test.
13 years ago
Vincent Driessen 06ce9622ea Add compact() method on Queues, to remove dead messages. 13 years ago
Vincent Driessen 70cbf00890 Refactor out an exists() and a for_key() method. 13 years ago
Vincent Driessen c49e564d3c Don't break the API when jobs get deleted. 13 years ago
Vincent Driessen bd08f24f15 Cosmetic changes to the command line output. 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 0a0d9d1ceb Flake8 style fixes. 13 years ago
Vincent Driessen 1a8b80604d Minor refactoring to make the to-failed queue code a bit more readable. 13 years ago
Vincent Driessen 11c7dbb376 Consistently renamed "failure" -> "failed" queue.
Fixes #28.
13 years ago
Vincent Driessen 9f5b1545b6 Fix: store the job result in the correct key.
And expire job hash in Redis after 500 seconds (by default).

Fixes #27.
13 years ago
Vincent Driessen 7bda1ca969 Encapsulate the result property (it should not directly be set). 13 years ago
Vincent Driessen 6266f68310 Style fixes (flake8). 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 90a458ca8e Add more colorful terminal output.
For better visual parsability.
13 years ago
Vincent Driessen 63ef198fd6 Improve work generator. 13 years ago