2015-06-01 04:00:36 +00:00
|
|
|
### 0.5.3
|
|
|
|
|
2015-06-03 08:55:16 +00:00
|
|
|
(June 3rd, 2015)
|
2015-06-01 04:00:36 +00:00
|
|
|
|
|
|
|
- Better API for instantiating Workers. Thanks @RyanMTB!
|
2015-06-03 08:55:16 +00:00
|
|
|
- Better support for unicode kwargs. Thanks @nealtodd and @brownstein!
|
|
|
|
- Workers now automatically cleans up job registries every hour
|
|
|
|
- Jobs in `FailedQueue` now have their statuses set properly
|
|
|
|
- `enqueue_call()` no longer ignores `ttl`. Thanks @mbodock!
|
|
|
|
- Improved logging. Thanks @trevorprater!
|
|
|
|
|
2015-06-01 04:00:36 +00:00
|
|
|
|
2015-04-14 07:10:35 +00:00
|
|
|
### 0.5.2
|
|
|
|
|
|
|
|
(April 14th, 2015)
|
|
|
|
|
|
|
|
- Support SSL connection to Redis (requires redis-py>=2.10)
|
|
|
|
- Fix to prevent deep call stacks with large queues
|
|
|
|
|
|
|
|
|
2015-03-09 08:18:34 +00:00
|
|
|
### 0.5.1
|
|
|
|
|
|
|
|
(March 9th, 2015)
|
|
|
|
|
|
|
|
- Resolve performance issue when queues contain many jobs
|
|
|
|
- Restore the ability to specify connection params in config
|
|
|
|
- Record `birth_date` and `death_date` on Worker
|
|
|
|
- Add support for SSL URLs in Redis (and `REDIS_SSL` config option)
|
|
|
|
- Fix encoding issues with non-ASCII characters in function arguments
|
|
|
|
- Fix Redis transaction management issue with job dependencies
|
|
|
|
|
|
|
|
|
2015-01-30 07:39:42 +00:00
|
|
|
### 0.5.0
|
|
|
|
(Jan 30th, 2015)
|
|
|
|
|
|
|
|
- RQ workers can now be paused and resumed using `rq suspend` and
|
|
|
|
`rq resume` commands. Thanks Jonathan Tushman!
|
|
|
|
- Jobs that are being performed are now stored in `StartedJobRegistry`
|
|
|
|
for monitoring purposes. This also prevents currently active jobs from
|
|
|
|
being orphaned/lost in the case of hard shutdowns.
|
|
|
|
- You can now monitor finished jobs by checking `FinishedJobRegistry`.
|
|
|
|
Thanks Nic Cope for helping!
|
|
|
|
- Jobs with unmet dependencies are now created with `deferred` as their
|
|
|
|
status. You can monitor deferred jobs by checking `DeferredJobRegistry`.
|
|
|
|
- It is now possible to enqueue a job at the beginning of queue using
|
|
|
|
`queue.enqueue(func, at_front=True)`. Thanks Travis Johnson!
|
|
|
|
- Command line scripts have all been refactored to use `click`. Thanks Lyon Zhang!
|
|
|
|
- Added a new `SimpleWorker` that does not fork when executing jobs.
|
|
|
|
Useful for testing purposes. Thanks Cal Leeming!
|
|
|
|
- Added `--queue-class` and `--job-class` arguments to `rqworker` script.
|
|
|
|
Thanks David Bonner!
|
|
|
|
- Many other minor bug fixes and enhancements.
|
|
|
|
|
|
|
|
|
2014-05-18 06:14:07 +00:00
|
|
|
### 0.4.6
|
2014-05-21 08:08:47 +00:00
|
|
|
(May 21st, 2014)
|
2014-05-18 06:14:07 +00:00
|
|
|
|
2014-05-21 08:08:47 +00:00
|
|
|
- Raise a warning when RQ workers are used with Sentry DSNs using
|
|
|
|
asynchronous transports. Thanks Wei, Selwin & Toms!
|
2014-05-18 06:14:07 +00:00
|
|
|
|
|
|
|
|
2014-05-08 11:56:57 +00:00
|
|
|
### 0.4.5
|
|
|
|
(May 8th, 2014)
|
|
|
|
|
|
|
|
- Fix where rqworker broke on Python 2.6. Thanks, Marko!
|
|
|
|
|
|
|
|
|
2014-05-07 18:49:48 +00:00
|
|
|
### 0.4.4
|
|
|
|
(May 7th, 2014)
|
|
|
|
|
|
|
|
- Properly declare redis dependency.
|
|
|
|
- Fix a NameError regression that was introduced in 0.4.3.
|
|
|
|
|
|
|
|
|
2014-05-06 13:58:35 +00:00
|
|
|
### 0.4.3
|
|
|
|
(May 6th, 2014)
|
|
|
|
|
|
|
|
- Make job and queue classes overridable. Thanks, Marko!
|
|
|
|
- Don't require connection for @job decorator at definition time. Thanks, Sasha!
|
|
|
|
- Syntactic code cleanup.
|
|
|
|
|
|
|
|
|
2014-04-28 06:31:09 +00:00
|
|
|
### 0.4.2
|
|
|
|
(April 28th, 2014)
|
|
|
|
|
|
|
|
- Add missing depends_on kwarg to @job decorator. Thanks, Sasha!
|
|
|
|
|
|
|
|
|
2014-04-22 20:21:37 +00:00
|
|
|
### 0.4.1
|
|
|
|
(April 22nd, 2014)
|
|
|
|
|
|
|
|
- Fix bug where RQ 0.4 workers could not unpickle/process jobs from RQ < 0.4.
|
|
|
|
|
|
|
|
|
2013-09-03 12:18:16 +00:00
|
|
|
### 0.4.0
|
2014-04-22 14:10:19 +00:00
|
|
|
(April 22nd, 2014)
|
2013-08-26 08:21:48 +00:00
|
|
|
|
2014-04-14 09:32:01 +00:00
|
|
|
- Emptying the failed queue from the command line is now as simple as running
|
|
|
|
`rqinfo -X` or `rqinfo --empty-failed-queue`.
|
|
|
|
|
2014-01-06 23:23:36 +00:00
|
|
|
- Job data is unpickled lazily. Thanks, Malthe!
|
2013-12-30 16:40:04 +00:00
|
|
|
|
2013-12-11 09:47:42 +00:00
|
|
|
- Removed dependency on the `times` library. Thanks, Malthe!
|
|
|
|
|
2013-09-03 12:18:16 +00:00
|
|
|
- Job dependencies! Thanks, Selwin.
|
|
|
|
|
2014-01-08 19:45:19 +00:00
|
|
|
- Custom worker classes, via the `--worker-class=path.to.MyClass` command line
|
|
|
|
argument. Thanks, Selwin.
|
|
|
|
|
2013-09-04 22:29:40 +00:00
|
|
|
- `Queue.all()` and `rqinfo` now report empty queues, too. Thanks, Rob!
|
|
|
|
|
|
|
|
- Fixed a performance issue in `Queue.all()` when issued in large Redis DBs.
|
|
|
|
Thanks, Rob!
|
|
|
|
|
2013-09-05 07:25:00 +00:00
|
|
|
- Birth and death dates are now stored as proper datetimes, not timestamps.
|
|
|
|
|
2013-08-26 08:21:48 +00:00
|
|
|
- Ability to provide a custom job description (instead of using the default
|
|
|
|
function invocation hint). Thanks, İbrahim.
|
|
|
|
|
2013-09-05 19:05:03 +00:00
|
|
|
- Fix: temporary key for the compact queue is now randomly generated, which
|
|
|
|
should avoid name clashes for concurrent compact actions.
|
|
|
|
|
|
|
|
- Fix: `Queue.empty()` now correctly deletes job hashes from Redis.
|
2013-09-02 20:54:49 +00:00
|
|
|
|
2013-08-26 08:21:48 +00:00
|
|
|
|
2013-12-17 11:28:57 +00:00
|
|
|
### 0.3.13
|
|
|
|
(December 17th, 2013)
|
|
|
|
|
|
|
|
- Bug fix where the worker crashes on jobs that have their timeout explicitly
|
|
|
|
removed. Thanks for reporting, @algrs.
|
|
|
|
|
|
|
|
|
2013-12-16 10:01:18 +00:00
|
|
|
### 0.3.12
|
|
|
|
(December 16th, 2013)
|
|
|
|
|
|
|
|
- Bug fix where a worker could time out before the job was done, removing it
|
|
|
|
from any monitor overviews (#288).
|
|
|
|
|
|
|
|
|
2013-08-23 13:11:58 +00:00
|
|
|
### 0.3.11
|
|
|
|
(August 23th, 2013)
|
|
|
|
|
|
|
|
- Some more fixes in command line scripts for Python 3
|
|
|
|
|
|
|
|
|
2013-08-20 10:06:43 +00:00
|
|
|
### 0.3.10
|
|
|
|
(August 20th, 2013)
|
|
|
|
|
|
|
|
- Bug fix in setup.py
|
|
|
|
|
|
|
|
|
2013-08-20 09:17:05 +00:00
|
|
|
### 0.3.9
|
|
|
|
(August 20th, 2013)
|
|
|
|
|
|
|
|
- Python 3 compatibility (Thanks, Alex!)
|
|
|
|
|
|
|
|
- Minor bug fix where Sentry would break when func cannot be imported
|
|
|
|
|
|
|
|
|
2013-02-26 10:46:41 +00:00
|
|
|
### 0.3.8
|
2013-06-17 06:48:57 +00:00
|
|
|
(June 17th, 2013)
|
2013-02-18 07:10:47 +00:00
|
|
|
|
2013-04-19 08:55:17 +00:00
|
|
|
- `rqworker` and `rqinfo` have a `--url` argument to connect to a Redis url.
|
|
|
|
|
2013-03-16 14:08:01 +00:00
|
|
|
- `rqworker` and `rqinfo` have a `--socket` option to connect to a Redis server
|
|
|
|
through a Unix socket.
|
|
|
|
|
|
|
|
- `rqworker` reads `SENTRY_DSN` from the environment, unless specifically
|
|
|
|
provided on the command line.
|
2013-02-18 07:10:47 +00:00
|
|
|
|
2013-04-19 08:55:17 +00:00
|
|
|
- `Queue` has a new API that supports paging `get_jobs(3, 7)`, which will
|
|
|
|
return at most 7 jobs, starting from the 3rd.
|
|
|
|
|
2013-02-18 07:10:47 +00:00
|
|
|
|
2013-02-26 10:42:39 +00:00
|
|
|
### 0.3.7
|
|
|
|
(February 26th, 2013)
|
|
|
|
|
|
|
|
- Fixed bug where workers would not execute builtin functions properly.
|
|
|
|
|
|
|
|
|
2013-02-06 22:28:03 +00:00
|
|
|
### 0.3.6
|
2013-02-18 07:09:06 +00:00
|
|
|
(February 18th, 2013)
|
2013-02-06 22:28:03 +00:00
|
|
|
|
2013-02-15 07:53:42 +00:00
|
|
|
- Worker registrations now expire. This should prevent `rqinfo` from reporting
|
|
|
|
about ghosted workers. (Thanks, @yaniv-aknin!)
|
2013-02-06 22:28:03 +00:00
|
|
|
|
2013-02-18 06:59:08 +00:00
|
|
|
- `rqworker` will automatically clean up ghosted worker registrations from
|
|
|
|
pre-0.3.6 runs.
|
|
|
|
|
|
|
|
- `rqworker` grew a `-q` flag, to be more silent (only warnings/errors are shown)
|
|
|
|
|
2013-02-06 22:28:03 +00:00
|
|
|
|
2013-01-23 19:52:20 +00:00
|
|
|
### 0.3.5
|
2013-02-06 22:26:52 +00:00
|
|
|
(February 6th, 2013)
|
2013-01-23 19:52:20 +00:00
|
|
|
|
2013-01-23 21:21:22 +00:00
|
|
|
- `ended_at` is now recorded for normally finished jobs, too. (Previously only
|
|
|
|
for failed jobs.)
|
2013-01-23 19:52:20 +00:00
|
|
|
|
2013-02-06 21:36:23 +00:00
|
|
|
- Adds support for both `Redis` and `StrictRedis` connection types
|
|
|
|
|
|
|
|
- Makes `StrictRedis` the default connection type if none is explicitly provided
|
|
|
|
|
2013-01-23 19:52:20 +00:00
|
|
|
|
2013-01-18 15:23:43 +00:00
|
|
|
### 0.3.4
|
2013-01-23 19:48:49 +00:00
|
|
|
(January 23rd, 2013)
|
2013-01-18 15:23:43 +00:00
|
|
|
|
2013-01-23 19:48:49 +00:00
|
|
|
- Restore compatibility with Python 2.6.
|
2013-01-18 15:23:43 +00:00
|
|
|
|
|
|
|
|
2012-09-03 06:15:47 +00:00
|
|
|
### 0.3.3
|
2013-01-18 14:51:17 +00:00
|
|
|
(January 18th, 2013)
|
2012-09-03 06:15:47 +00:00
|
|
|
|
2013-01-18 14:12:49 +00:00
|
|
|
- Fix bug where work was lost due to silently ignored unpickle errors.
|
|
|
|
|
2012-09-03 11:54:39 +00:00
|
|
|
- Jobs can now access the current `Job` instance from within. Relevant
|
|
|
|
documentation [here](http://python-rq.org/docs/jobs/).
|
|
|
|
|
|
|
|
- Custom properties can be set by modifying the `job.meta` dict. Relevant
|
|
|
|
documentation [here](http://python-rq.org/docs/jobs/).
|
2012-09-02 09:30:45 +00:00
|
|
|
|
2012-09-03 11:53:52 +00:00
|
|
|
- Custom properties can be set by modifying the `job.meta` dict. Relevant
|
|
|
|
documentation [here](http://python-rq.org/docs/jobs/).
|
2012-09-03 06:15:47 +00:00
|
|
|
|
2012-09-05 06:37:40 +00:00
|
|
|
- `rqworker` now has an optional `--password` flag.
|
|
|
|
|
2013-01-18 14:48:27 +00:00
|
|
|
- Remove `logbook` dependency (in favor of `logging`)
|
|
|
|
|
2012-09-03 06:15:47 +00:00
|
|
|
|
2012-09-02 09:30:45 +00:00
|
|
|
### 0.3.2
|
2012-09-03 06:13:22 +00:00
|
|
|
(September 3rd, 2012)
|
|
|
|
|
|
|
|
- Fixes broken `rqinfo` command.
|
|
|
|
|
|
|
|
- Improve compatibility with Python < 2.7.
|
2012-09-02 09:30:45 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
2012-08-07 09:09:08 +00:00
|
|
|
### 0.3.1
|
2012-08-30 19:37:29 +00:00
|
|
|
(August 30th, 2012)
|
2012-08-07 09:09:08 +00:00
|
|
|
|
|
|
|
- `.enqueue()` now takes a `result_ttl` keyword argument that can be used to
|
|
|
|
change the expiration time of results.
|
|
|
|
|
2012-08-23 07:54:27 +00:00
|
|
|
- Queue constructor now takes an optional `async=False` argument to bypass the
|
|
|
|
worker (for testing purposes).
|
|
|
|
|
2012-08-27 12:22:02 +00:00
|
|
|
- Jobs now carry status information. To get job status information, like
|
|
|
|
whether a job is queued, finished, or failed, use the property `status`, or
|
|
|
|
one of the new boolean accessor properties `is_queued`, `is_finished` or
|
|
|
|
`is_failed`.
|
|
|
|
|
|
|
|
- Jobs return values are always stored explicitly, even if they have to
|
|
|
|
explicit return value or return `None` (with given TTL of course). This
|
|
|
|
makes it possible to distinguish between a job that explicitly returned
|
|
|
|
`None` and a job that isn't finished yet (see `status` property).
|
|
|
|
|
2012-08-29 11:06:41 +00:00
|
|
|
- Custom exception handlers can now be configured in addition to, or to fully
|
2012-08-29 11:11:01 +00:00
|
|
|
replace, moving failed jobs to the failed queue. Relevant documentation
|
|
|
|
[here](http://python-rq.org/docs/exceptions/) and
|
|
|
|
[here](http://python-rq.org/patterns/sentry/).
|
2012-08-29 11:06:41 +00:00
|
|
|
|
2012-08-29 12:51:26 +00:00
|
|
|
- `rqworker` now supports passing in configuration files instead of the
|
|
|
|
many command line options: `rqworker -c settings` will source
|
|
|
|
`settings.py`.
|
|
|
|
|
2012-08-29 12:57:40 +00:00
|
|
|
- `rqworker` now supports one-flag setup to enable Sentry as its exception
|
|
|
|
handler: `rqworker --sentry-dsn="http://public:secret@example.com/1"`
|
|
|
|
Alternatively, you can use a settings file and configure `SENTRY_DSN
|
|
|
|
= 'http://public:secret@example.com/1'` instead.
|
|
|
|
|
2012-08-07 09:09:08 +00:00
|
|
|
|
2012-07-23 10:01:35 +00:00
|
|
|
### 0.3.0
|
2012-08-05 07:52:51 +00:00
|
|
|
(August 5th, 2012)
|
|
|
|
|
|
|
|
- Reliability improvements
|
|
|
|
|
|
|
|
- Warm shutdown now exits immediately when Ctrl+C is pressed and worker is idle
|
|
|
|
- Worker does not leak worker registrations anymore when stopped gracefully
|
2012-07-20 12:50:23 +00:00
|
|
|
|
2012-07-24 09:28:18 +00:00
|
|
|
- `.enqueue()` does not consume the `timeout` kwarg anymore. Instead, to pass
|
|
|
|
RQ a timeout value while enqueueing a function, use the explicit invocation
|
|
|
|
instead:
|
|
|
|
|
2012-08-02 12:52:12 +00:00
|
|
|
```python
|
2012-07-24 09:28:18 +00:00
|
|
|
q.enqueue(do_something, args=(1, 2), kwargs={'a': 1}, timeout=30)
|
2012-08-02 12:52:12 +00:00
|
|
|
```
|
2012-07-24 09:28:18 +00:00
|
|
|
|
|
|
|
- Add a `@job` decorator, which can be used to do Celery-style delayed
|
|
|
|
invocations:
|
|
|
|
|
2012-08-02 12:52:12 +00:00
|
|
|
```python
|
2013-02-06 21:36:23 +00:00
|
|
|
from redis import StrictRedis
|
2012-07-24 09:28:18 +00:00
|
|
|
from rq.decorators import job
|
|
|
|
|
2012-07-25 07:11:13 +00:00
|
|
|
# Connect to Redis
|
2013-02-06 21:36:23 +00:00
|
|
|
redis = StrictRedis()
|
2012-07-25 07:11:13 +00:00
|
|
|
|
|
|
|
@job('high', timeout=10, connection=redis)
|
2012-07-24 09:28:18 +00:00
|
|
|
def some_work(x, y):
|
|
|
|
return x + y
|
2012-08-02 12:52:12 +00:00
|
|
|
```
|
2012-07-24 09:28:18 +00:00
|
|
|
|
2012-07-25 07:11:13 +00:00
|
|
|
Then, in another module, you can call `some_work`:
|
|
|
|
|
2012-08-02 12:52:12 +00:00
|
|
|
```python
|
2012-07-25 07:11:13 +00:00
|
|
|
from foo.bar import some_work
|
|
|
|
|
2012-07-24 09:28:18 +00:00
|
|
|
some_work.delay(2, 3)
|
2012-08-02 12:52:12 +00:00
|
|
|
```
|
2012-07-20 12:50:23 +00:00
|
|
|
|
|
|
|
|
2012-08-01 11:54:05 +00:00
|
|
|
### 0.2.2
|
|
|
|
(August 1st, 2012)
|
|
|
|
|
|
|
|
- Fix bug where return values that couldn't be pickled crashed the worker
|
|
|
|
|
|
|
|
|
2012-07-20 12:49:18 +00:00
|
|
|
### 0.2.1
|
|
|
|
(July 20th, 2012)
|
2012-07-18 12:43:28 +00:00
|
|
|
|
2012-07-20 12:26:05 +00:00
|
|
|
- Fix important bug where result data wasn't restored from Redis correctly
|
|
|
|
(affected non-string results only).
|
|
|
|
|
2012-07-18 12:43:28 +00:00
|
|
|
|
2012-07-18 12:42:26 +00:00
|
|
|
### 0.2.0
|
|
|
|
(July 18th, 2012)
|
|
|
|
|
|
|
|
- `q.enqueue()` accepts instance methods now, too. Objects will be pickle'd
|
|
|
|
along with the instance method, so beware.
|
|
|
|
- `q.enqueue()` accepts string specification of functions now, too. Example:
|
|
|
|
`q.enqueue("my.math.lib.fibonacci", 5)`. Useful if the worker and the
|
|
|
|
submitter of work don't share code bases.
|
|
|
|
- Job can be assigned custom attrs and they will be pickle'd along with the
|
|
|
|
rest of the job's attrs. Can be used when writing RQ extensions.
|
|
|
|
- Workers can now accept explicit connections, like Queues.
|
|
|
|
- Various bug fixes.
|
2012-05-20 14:09:57 +00:00
|
|
|
|
|
|
|
|
2012-05-15 06:38:10 +00:00
|
|
|
### 0.1.2
|
|
|
|
(May 15, 2012)
|
|
|
|
|
|
|
|
- Fix broken PyPI deployment.
|
|
|
|
|
|
|
|
|
2012-05-14 06:41:56 +00:00
|
|
|
### 0.1.1
|
|
|
|
(May 14, 2012)
|
|
|
|
|
|
|
|
- Thread-safety by using context locals
|
|
|
|
- Register scripts as console_scripts, for better portability
|
|
|
|
- Various bugfixes.
|
|
|
|
|
|
|
|
|
|
|
|
### 0.1.0:
|
|
|
|
(March 28, 2012)
|
|
|
|
|
|
|
|
- Initially released version.
|