1770 Commits (0b5a90adac2f51e257a2ec3ec9e954a4b0d52f52)
 

Author SHA1 Message Date
Cyril Chapellier 0b5a90adac
Fix as_text in certain conditions (#1917) 2 years ago
Ethan Wolinsky 192fbc9c50
Add support for a callback on stopped jobs (#1909)
* Add support for a callback on stopped jobs

This function will run when an active job is stopped using the
send_stopped_job_command_function

* Remove testing async job with stopped callback

* Remove stopped job test from simpleworker case.

I can't stop the job from the test until the work() method returns, at which point the
job can't be stopped.

* Improve coverage

* Add test for stopped callback execution

* Move stopped callback check out of execution func

* Use SimpleWorker for stopped callback test

* Call stopped callback directly in main proc

* Remove unused imports

* Fix import order

* Fix import order

* Fix death penalty class arg

* Fix worker instance init

Sorry these commits are so lazy
2 years ago
Ethan Wolinsky b756cf82bd
Add support for dependent jobs in enqueue_many (#1897)
* Add support for dependent jobs in enqueue_many

* Add module to register dependencies for multiple jobs

The get_ready_jobs function will process dependencies for an array of
jobs passed in. If any jobs' dependencies are already met, those jobs
are returned so they can be enqueued.

* Add check for jobs without dependencies

* Remove extra colon in dependencies key

This seems like a bug, but if I'm mistaken please let me know.

* Add bulk deferred jobs to Redis

Need to call queue.enqueue_job to create the job hash in redis. Since all of
these jobs are deferred, they won't be added to the queue and processed
by a worker.

* Revert "Remove extra colon in dependencies key"

This reverts commit 5ebf7a35009fcca410c43b9327203915ddfd0628.

* Enqueue jobs without dependencies separately

Any jobs without dependencies will be enqueued before handling

* Fix enqueue_many return value

* Rename ready_jobs function

* Fix enqueue_many return value

* Instantiate job category arrays before if statement

* Execute pipe to enqueue jobs with met dependencies

* Add tests for enqueue_many with dependencies

* Change dependency sorting function name

* Use common kwargs dict to create jobs

* Remove redundant tests for dependent jobs

* Alphebetize imports

* Test job with met dependencies using enqueue_many

* Fix typo

* Format with black

* Sort imports
2 years ago
Selwin Ong ffacdcb675
Update tox.ini to not run linters (#1916) 2 years ago
Selwin Ong 37ddcb51cd
Reliable queue (#1911)
* Use lmove() when working on a single queue

* Skip reliable queue tests if Redis server doesn't support LMOVE

* Better test coverage

* job.origin should be string

* Added test for job that gets orphaned if worker.execute_job() fails

* Fix job tests

* worker.run_maintenance_tasks() now cleans intermediate queues

* Fixed import ordering

* No need to run slow tests and flake8 on SSL tests

* Minor typing fixes

* Fixed linting
2 years ago
juur 107221fd9e
Update cli.py to support custom loggers (#1906)
* Update cli.py to support custom loggers

Allows a config.py file (via rq worker --config) to support things like this for logfmt logging:

DICT_CONFIG = {
        "version": 1,
        "formatters": {"logfmt": {
            "()": "logfmter.Logfmter",
            "keys": ["level","when","pid"],
            "mapping": {"level":"levelname","when":"asctime","pid":"process"},
            "datefmt": "%Y-%m-%dT%H:%M:%S%z"
            }},
        "handlers": {"console": {"class": "logging.StreamHandler","formatter": "logfmt" }},
        "loggers": {
            "root": {"handlers":["console"], "level": "INFO"},
            "rq":   {"handlers":["console"], "level": "INFO", "propagate": False},
            }
        }

* added simple test and documentation for DICT_CONFIG

* further attempt to get testing right for dictConfig

* move import to correct location

* fix

* remove meaningless options.get() usage

* linting checks and added missing test config file
2 years ago
xzander bdbc9a4f9c
Scheduler should release and heartbeat only acquired locks (#1914)
* Scheduler should release and heartbeat only acquired locks.

* Added tests for heartbeat and release only acquired locks.

* Changed test description to correct one.
2 years ago
Rob Hudson ea063edf0a
Update linting configuration (#1915)
* Update linting configuration

This removes flake8 in favor of ruff, which also provides isort support, and
updates all files to be black, isort, and ruff compliant. This also adds black
and ruff checks to the tox and Github linting workflow.

* Tweak the code coverage config and calls
2 years ago
dependabot[bot] bbfeb8c8ed
Bump docker/build-push-action from 2 to 4 (#1913)
Bumps [docker/build-push-action](https://github.com/docker/build-push-action) from 2 to 4.
- [Release notes](https://github.com/docker/build-push-action/releases)
- [Commits](https://github.com/docker/build-push-action/compare/v2...v4)

---
updated-dependencies:
- dependency-name: docker/build-push-action
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 years ago
Tom Hamilton Stubber edc93c380f
Stop calling deprecated function (#1908) 2 years ago
Cyril Chapellier 84833b9c5f
[Chore] Fix test suite (#1895)
* fix: tests suite

* chore: add SSL tests
2 years ago
Selwin Ong 46d0056a69 Bump version to 1.14.1 2 years ago
Cyril Chapellier a228b4838c
[Hotfix] Fix SSL connection for scheduler (#1894)
* fix: ssl

* fix: reinstate a test for parse_connection
2 years ago
gabriels1234 07fef85dd2
Catch serializer TypeError Exception (#1872)
* Catch serializer TypeError Exception

* Add test for unserializable job.meta
2 years ago
Selwin Ong af2dfb1446 Deleted redundant requirements from dev-requirements.txt 2 years ago
Selwin Ong 5787e8f4a0
Coverage fixes (#1890)
* Don't fail CI if codecov fails

* Remove codecov from dev-requirements.txt

* Pin packaging dependency to 21.3

* Pin coverage to 6.5.0

* Pin coverage to 6.2

* Downgrade packaging

* Drop Python 3.6 from test matrix

* Reenable Python 3.6 in tests

* Downgrade coverage req

* Make a different dev-requirements file for Python 3.6

* Moved dev-requirements-36 to root dir
2 years ago
Selwin Ong 5f883c6e1c Merge branch 'master' of github.com:rq/rq 2 years ago
Selwin Ong 5e70e523d3 Bump version to 0.14.0 2 years ago
Selwin Ong 64cb1a27b9
Worker pool (#1874)
* First stab at implementating worker pool

* Use process.is_alive() to check whether a process is still live

* Handle shutdown signal

* Check worker loop done

* First working version of `WorkerPool`.

* Added test for check_workers()

* Added test for pool.start()

* Better shutdown process

* Comment out test_start() to see if it fixes CI

* Make tests pass

* Make CI pass

* Comment out some tests

* Comment out more tests

* Re-enable a test

* Re-enable another test

* Uncomment check_workers test

* Added run_worker test

* Minor modification to dead worker detection

* More test cases

* Better process name for workers

* Added back pool.stop_workers() when signal is received

* Cleaned up cli.py

* WIP on worker-pool command

* Fix test

* Test that worker pool ignores consecutive shutdown signals

* Added test for worker-pool CLI command.

* Added timeout to CI jobs

* Fix worker pool test

* Comment out test_scheduler.py

* Fixed worker-pool in burst mode

* Increase test coverage

* Exclude tests directory from coverage.py

* Improve test coverage

* Renamed `Pool(num_workers=2) to `Pool(size=2)`

* Revert "Renamed `Pool(num_workers=2) to `Pool(size=2)`"

This reverts commit a1306f89ad0d8686c6bde447bff75e2f71f0733b.

* Renamed Pool to WorkerPool

* Added a new TestCase that doesn't use LocalStack

* Added job_class, worker_class and serializer arguments to WorkerPool

* Use parse_connection() in WorkerPool.__init__

* Added CLI arguments for worker-pool

* Minor WorkerPool and test fixes

* Fixed failing CLI test

* Document WorkerPool
2 years ago
Selwin Ong 8a9daecaf2 Added changelog 2 years ago
Cyril Chapellier 08cb311c55
[Results] Allow unserializable return values (#1888)
* fix: allow unserializable return values

* fix: review comments
2 years ago
Selwin Ong 36f5c88ca2
Added BaseWorker class (#1887)
* Added BaseWorker class

* Moved logging related functions to logutils

* Remove uneeded colorize function

* Updated worker.get_current_job_id() to not fail when job ID is None

* job.restore() shouldn't crash if  is not present

* Fix various as_text() related crashes
2 years ago
Rob Hudson 4073aa3642
Update `push_job_id` debug string when using pipelines (#1886) 2 years ago
Selwin Ong 77e926c424
Added parse_connection function (#1884)
* Added parse_connection function

* feat: allow custom connection pool class (#1885)

* Added test for SSL

---------

Co-authored-by: Cyril Chapellier <tchapi@users.noreply.github.com>
2 years ago
Selwin Ong 95983cfcac Exclude tests directory from coverage.py 2 years ago
Selwin Ong 60bed7d58c
Exclude tests dir from coverage.py (#1883) 2 years ago
nhairs 67b2c982f9
Add py.typed for PEP561 compliance (#1882) 2 years ago
dependabot[bot] 74746cc390
Bump actions/setup-python from 4.5.0 to 4.6.0 (#1880)
Bumps [actions/setup-python](https://github.com/actions/setup-python) from 4.5.0 to 4.6.0.
- [Release notes](https://github.com/actions/setup-python/releases)
- [Commits](https://github.com/actions/setup-python/compare/v4.5.0...v4.6.0)

---
updated-dependencies:
- dependency-name: actions/setup-python
  dependency-type: direct:production
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2 years ago
Selwin Ong b639ee6406
Cleaned up cli.py (#1876) 2 years ago
Selwin Ong ed7a171460
Ignore `if TYPE_CHECKING:` when measuring test coverage (#1875)
* Ignore `if TYPE_CHECKING:` when measuring test coverage

* Update codecov.yml instead

* Added "[report]" to coveragerc

* Revert "Update codecov.yml instead"

This reverts commit f68a905de447ba947a46fcd4ef7c20824262d187.
2 years ago
Selwin Ong 7c1f96fafa Better process name for workers 2 years ago
luto 4f3670b024
improve the docs on in-flight jobs of killed/lost workers (#1840)
* improve the docs on in-flight jobs of killed/lost workers

* improve the docs on in-flight jobs of killed/lost workers

* document abandoned job behavior before 0.14
2 years ago
Tianci Hu Marrero eadabc036b
Added job details to "rq info" command (#1869)
* Update index.md

fixed minor duplicate article ("the its config var")

* added job details to rq info cli
2 years ago
Joris a9fae76e88
Fix error in example in the documentation (#1870)
The solution that @rpkak proposes works. Closes #1524
2 years ago
Rony Lutsky 04722339d7
Consolidate job callbacks execution (#1851)
* consolidate job failure callback execution

* fix

* success callback as well

* merge fix

* create Callback class and change how callbacks serde

* deprecation

* add tests

* string format

* pr fix

* revert serialization changes

* fix timeout typing

* add documentation

* add test

* fix a bug

* fix tests

* move job heartbeat call to worker and make sure there is always a callback timeout

* fix test

* fix test
2 years ago
Jochen Kupperschmidt 60164c5107
Fix typo in deprecation warning (#1866)
Help when grepping through warnings.
2 years ago
Simó Albert i Beltran 64e202ea19
Check dependencies when enqueue via Queue.enqueue_job() (#1837)
* test: check dependencies when enqueue via Queue.enqueue_job()

Signed-off-by: Simó Albert i Beltran <sim6@bona.gent>

* fix: check dependencies when enqueue via Queue.enqueue_job()

Signed-off-by: Simó Albert i Beltran <sim6@bona.gent>
Co-authored-by: Selwin Ong <selwin.ong@gmail.com>

---------

Signed-off-by: Simó Albert i Beltran <sim6@bona.gent>
Co-authored-by: Selwin Ong <selwin.ong@gmail.com>
2 years ago
Jesse P. Johnson 5a1c0a09f4
fix: remove unsafe formating and standardize qoutes (#1857)
* test: resolve merge issues

* test: resolve merge issues
2 years ago
lowercase00 ec0b08ebf0
bugfix: type annotations as str to allow Windows usage (#1852) 2 years ago
Jesse P. Johnson a21768ad90
refactor: remove python2 cruft (#1863) 2 years ago
lowercase00 c12561db0a
docs: add deprecation warnings to connection functions (#1860) 2 years ago
lowercase00 d5bde117c2
Remove `use_connection` (#1859)
* feat: remove use_connection

* fix: clear old test
2 years ago
Joachim Burket 7f9f0f72ba
Update arguments passed to the Sentinel Object when created from the settings (#1850)
* Updated arguments passed to the Sentinel Object when created from the settings

- added `USERNAME` key
- added `CONNECTION_KWARGS` key to allow passing additionals arguments to the Redis connections
- updated the documentation

* added missing comma

* tests(helpers): Added tests for Sentinel

---------

Co-authored-by: Joachim Burket <joachim.burket@hopitalvs.ch>
2 years ago
lowercase00 82a59e9791
feat: move `reorder_queues` to `dequeue_job` (#1853)
* feat: move `reorder_queues` to `dequeue_job`

* Update worker.py
2 years ago
Tianci Hu Marrero 5de8cda1f9
Update index.md (#1858)
fixed minor duplicate article ("the its config var")
2 years ago
lowercase00 654649743c
New dequeue strategy (#1806)
* New dequeue strategy

This implements a new parameter `dequeue_strategy` that
should replace the `RoundRobinWorker` and `RandomWorker`.
Changes includes: feature, docs, tests, deprecation warning.

* Fix dequeue strategy name

* Black & Fix warning

* feat: tests, warnings, refactor naming

* feat: improve worker check

* fix: revert to str subclass

* fix: dequeue strategy into bootstrap

* org: move DequeueStrategy to worker

* refactor: round robin naming

* fix: naming

* fix: type annotation

* fix: typo

* refactor: remove kwarg from worker's init

* fix: typo

* move `dequeue_strategy` from `bootstrap()` into `work()`
2 years ago
Rony Lutsky 0ba3971d55
Add failure callback call to started job registry cleanup (#1824)
* Add started job registry cleanup job failure callback call

* WIP - need to fix test

* fix test

* rename, tests and docs

* better log message

* use class name

* Update registry.py
2 years ago
lowercase00 95558fcc1d
docs: scheduler safe import (#1835)
* docs: scheduler safe import

* docs: rollback main block
2 years ago
Marcus Ong e92682c83a
Fix TimerDeathPenalty not properly handling negative/infinite timeout (#1845)
* Fix TimerDeathPenalty not properly handling negative/infinite timeout

* revert back to using exc_info

---------

Co-authored-by: Marcus <marcus@us2.ai>
2 years ago
Simó Albert i Beltran ed59b9248a
fix: Dependency list in depends_on (#1843)
* test: Dependency list in depends_on

Signed-off-by: Simó Albert i Beltran <sim6@bona.gent>

* fix: Dependency list in depends_on

Signed-off-by: Simó Albert i Beltran <sim6@bona.gent>

---------

Signed-off-by: Simó Albert i Beltran <sim6@bona.gent>
2 years ago