* **BACKWARDS INCOMPATIBLE**: synchronous execution of jobs now correctly mimics async job execution. Exception is no longer raised when a job fails, job status will now be correctly set to `FAILED` and failure callbacks are now properly called when job is run synchronously. Thanks ericman93! * Fixes a bug that could cause job keys to be left over when `result_ttl=0`. Thanks selwin! * Allow `ssl_cert_reqs` argument to be passed to Redis. Thanks mgcdanny! * Better compatibility with Python 3.10. Thanks rpkak! * `job.cancel()` should also remove itself from registries. Thanks joshcoden! * Pubsub threads are now launched in `daemon` mode. Thanks mik3y!
1.10.0
* You can now enqueue jobs from CLI. Docs [here](https://python-rq.org/docs/#cli-enqueueing). Thanks rpkak! * Added a new `CanceledJobRegistry` to keep track of canceled jobs. Thanks selwin! * Added custom serializer support to various places in RQ. Thanks joshcoden! * `cancel_job(job_id, enqueue_dependents=True)` allows you to cancel a job while enqueueing its dependents. Thanks joshcoden! * Added `job.get_meta()` to fetch fresh meta value directly from Redis. Thanks aparcar! * Fixes a race condition that could cause jobs to be incorrectly added to FailedJobRegistry. Thanks selwin! * Requeueing a job now clears `job.exc_info`. Thanks selwin! * Repo infrastructure improvements by rpkak. * Other minor fixes by cesarferradas and bbayles.
1.9.0
* Added success and failure callbacks. You can now do `queue.enqueue(foo, on_success=do_this, on_failure=do_that)`. Thanks selwin! * Added `queue.enqueue_many()` to enqueue many jobs in one go. Thanks joshcoden! * Various improvements to CLI commands. Thanks rpkak! * Minor logging improvements. Thanks clavigne and natbusa!
1.8.1
* Jobs that fail due to hard shutdowns are now retried. Thanks selwin! * `Scheduler` now works with custom serializers. Thanks alella! * Added support for click 8.0. Thanks rpkak! * Enqueueing static methods are now supported. Thanks pwws! * Job exceptions no longer get printed twice. Thanks petrem!
1.8.0
* You can now declare multiple job dependencies. Thanks skieffer and thomasmatecki for laying the groundwork for multi dependency support in RQ. * Added `RoundRobinWorker` and `RandomWorker` classes to control how jobs are dequeued from multiple queues. Thanks bielcardona! * Added `--serializer` option to `rq worker` CLI. Thanks f0cker! * Added support for running asyncio tasks. Thanks MyrikLD! * Added a new `STOPPED` job status so that you can differentiate between failed and manually stopped jobs. Thanks dralley! * Fixed a serialization bug when used with job dependency feature. Thanks jtfidje! * `clean_worker_registry()` now works in batches of 1,000 jobs to prevent modifying too many keys at once. Thanks AxeOfMen and TheSneak! * Workers will now wait and try to reconnect in case of Redis connection errors. Thanks Asrst!
1.7.0
* Added `job.worker_name` attribute that tells you which worker is executing a job. Thanks selwin! * Added `send_stop_job_command()` that tells a worker to stop executing a job. Thanks selwin! * Added `JSONSerializer` as an alternative to the default `pickle` based serializer. Thanks JackBoreczky! * Fixes `RQScheduler` running on Redis with `ssl=True`. Thanks BobReid!