Commit Graph
64 Commits
Author SHA1 Message Date
Dimitri 957f807598 Allow tasks to be scheduled on a specific cluster (#555)
* Allows schedule by cluster

* Update docs

* Add example in doc

* Fixes cluster field must be blank

* Adds cluster arg to schedule func

* Adds cluster field in list_display/filter for admin

* Uses Q filter to fetch schedule

* Fixes ref in doc

* Adds tests
2021-05-14 13:42:54 +02:00
Ilan Steemers 7d03536e89 Migrate to Github Action CI (#507)
* Some small refactors

* Initial test script

* Fixes django matrix

* Trying to set up Disque

* Disque as a docker service

* lowercase action name

* Remove Travis

* Replaces Travis badge with Github actions badge

* Show django version in step

* Typo
2021-02-14 18:59:04 +01:00
Ilan Steemers 532199fff3 Trigger cron validation 2020-07-01 14:18:04 +02:00
Ilan Steemers 5fe5b5fe37 Adds cron kwarg 2020-06-29 11:38:50 +02:00
Bastien Vallet 3569d2ea8c [cleanup] Fix some linting issues 2020-06-10 12:00:55 +02:00
Bastien Vallet 68d95a2924 [cleanup] Remove python2 artifacts 2020-06-10 11:48:31 +02:00
Ilan 0bca3cbd7a Replacing format with f-strings 2020-02-17 16:59:12 +01:00
Ilan Steemers c27938ee62 Merge pull request #333 from tremby/fix-timeout-override
Fix timeout override
2019-08-13 14:16:03 +02:00
Chris Lamb 5c8243903f Inline import to prevent circular imports under some toolchain combinations. (Closes: #331) 2019-04-26 09:19:21 +01:00
Bart Nagel 4c2a2f3279 Fix timeout override
Closes https://github.com/Koed00/django-q/issues/332
2019-01-21 16:23:45 -08:00
Ilan Steemers e0824802ca Use isinstance instead of typeof 2018-08-05 15:12:18 +02:00
Ilan Steemers 83d90664fb Frees resources on sync run - @abompard 2018-08-05 11:12:14 +02:00
Ilan Steemers acebdaa850 Renames async/enqueue to async_task. 2018-08-01 15:20:34 +02:00
Pierre-Elliott Bécue ae75a84f7f Replaces async occurrences with alternatives
* async is now a reserved word in python3.7
 * Rename async function to enqueue
 * Rename all async_ functions to enqueue_
 * Rename Async class to AsyncTask
 * Updates the docs.
2018-07-07 21:33:43 +02:00
Ilan Steemers d5e430be44 Merge pull request #298 from Balletie/master
Add option for acknowledging failed tasks (globally and per-task)
2018-03-13 15:24:31 +01:00
Eagllus 430c177b92 Move import to the function that uses it
Only Python 2.x is having problems with this import so for now
the fix would be to move the import to the function that uses cluster
2018-03-13 09:37:13 +01:00
Eagllus 8f87bc352f Change imports for cluster and tasks 2018-03-13 09:28:17 +01:00
Eagllus 9c39546417 Change imports signing classes explicit 2018-03-13 09:22:09 +01:00
Balletie 03abbc960f Add option for acknowledging failed tasks (globally and per-task)
If a task fails with an exception, it is retried until it
succeeds. This is contrary to what is said in the documentation: under
the "Architecture" section, heading "Broker" it says that even when a
task errors, it's still considered a successful delivery. Failed tasks
never get acknowledged however, thereby being retried after the
timeout period. See also issues #238 and #194.

This patch adds an option to acknowledge failures, thereby closing
issue #238. Issue #194 would require some more work. The default of
this option is set to `False`, thereby maintaining backwards
compatibility.
2018-03-09 22:09:46 +01:00
Ronald van Zon dd4f02f122 Add custom SharedCounter / Queue
This will not fix anything related to Django 2.0 but will allow MAC
users to run Django-Q allowing tests to be run locally.
2017-12-13 14:36:12 +01:00
Ilan Steemers f3ae8a86dc Merge pull request #148 from xoxzo/log-enqueue-id
Log id returned by broker
2017-04-05 16:31:55 +03:00
Aurélien Bompard 77c5bb0737 Add signals
Fixes #219
2017-03-03 14:25:04 +01:00
Ilan Steemers d4e0646097 Also fetches name override from q_options 2016-02-28 15:11:48 +01:00
Ilan Steemers 1e5509de45 Also fetches name override from q_options 2016-02-28 15:05:50 +01:00
Ilan Steemers 397503f5b2 Adds optional task_name argument 2016-02-24 10:52:25 +01:00
Ilan Steemers 0a8f2e7e72 Adds optional task_name argument
Makes it possible to name the task yourself.
2016-02-24 10:44:47 +01:00
k4ml cb459cd0a1 Log id returned by broker
This will make it easy to inspect broker directly for particular message.
2016-02-19 17:01:42 +09:00
Ilan Steemers d398685345 Adds a check for duplicate schedule names.
This should prevent the accidental repeated creation of schedules.
2015-11-19 17:57:31 +01:00
Ilan Steemers 3cc4021aad Optimizes option iteration for async
Simplified option iteration to only use a single loop. This makes the async command about twice as fast in optimal conditions.
2015-10-27 10:29:35 +01:00
Ilan Steemers 12bfd47917 Splits options from keywords through iteration
Popping options from async kwargs will make any reference to them void. Which can lead to unwanted situations. Unfortunately deepcopy clashes with the multiprocessing so we resort to simple re-iteration.
2015-10-26 15:33:42 +01:00
Ilan Steemers 728ba45ef0 Adds Async class wrapper for the async function 2015-10-26 13:48:23 +01:00
Ilan Steemers 62337a9d06 Adds infinite wait to task result functions
* the `wait` keyword now can take the value `-1` which will make the functions wait indefinitely for a result.
2015-10-25 16:40:49 +01:00
Ilan Steemers 7eefb8cb64 returns the size of the chain or iter on append 2015-10-18 15:57:23 +02:00
Ilan Steemers eb72eb33d9 Adds an Iter class
The Iter class serves as a convenience rwrapper around the `async_iter` function
2015-10-18 13:53:32 +02:00
Ilan Steemers 083715f9bd Replaces list.copy with a slice for python 2.7 2015-10-17 18:59:17 +02:00
Ilan Steemers 2df29b908c Adds tests for task chains
adds several small improvements based on the problems that surfaced during writing the tests
2015-10-17 18:49:45 +02:00
Ilan Steemers 6dcead7310 Adds task chains 2015-10-17 12:13:29 +02:00
Ilan Steemers 2ba88f2d17 adds cached option to async_iter 2015-10-06 19:37:02 +02:00
Ilan Steemers f73ae66c0f Adds async_iter command
With async iter you can quickly run the same function on an iterable set of arguments. The results are held in the cache until all are done and collated into a database result.
2015-10-03 18:07:57 +02:00
Ilan Steemers 81d5abbd00 adds count and wait option to group result and fetch
result_group and fetch_group can now be told to block for a certain number of results or a number of miliseconds or a combination of both.
2015-10-02 18:29:03 +02:00
Ilan Steemers 9cfc41f1cb fixed global cached for fetch group
And added docstrings
2015-10-02 16:40:31 +02:00
Ilan Steemers f6d14bc7b3 adds delete_cached 2015-10-01 19:25:43 +02:00
Ilan Steemers 6127b551ae fixes tests for cache with better coverage 2015-10-01 17:21:26 +02:00
Ilan Steemers 7107e9ea35 fetch group should default to non cached 2015-10-01 15:06:43 +02:00
Ilan Steemers 33282cb2e5 cached result backend
first version of a result backend using django's cache framework
2015-10-01 14:58:28 +02:00
Ilan Steemers a493f9cc78 Adds wait option to result() and fetch() 2015-09-18 10:57:09 +02:00
Ilan Steemers da20ebe734 fixes connection creation on import 2015-08-31 15:15:24 +02:00
Ilan Steemers 0740c90148 adds pluggable brokers
* added redis broker
 * added django_redis broker
 * added task acknowledgement
2015-08-29 18:54:07 +02:00
Ilan 6c37b09151 adds global sync configuration option
Setting the `sync` configuration option will force all async() calls to be run with `sync=True`. Useful for testing.
2015-08-13 18:02:38 +02:00
Ilan 3d12c1d36e adds queue_size()
returns the size of the current redis queue
2015-08-13 15:54:57 +02:00