Changelog¶
All notable changes to this project will be documented in this file.
`3.0.1`_ – 2023-09-25¶
Fix¶
Add dependency to attrs library
`3.0.0`_ – 2023-09-19¶
Breaking changes¶
The only runtime breaking change is that Message and Result are no longer named tuples, but attrs frozen classes. Other breaking changes only concern the typing system.
Actor is no longer a generic of the function it wraps, but it uses PEP 612 parameter specification variables.
@actor
def add(a: int, b: int) -> int:
return a + b
# previously `add` was Actor[Callable[[int, int], int]]
# now it's Actor[[int, int], int]
# and Actor[Callable[..., int]] becomes Actor[..., int]
We’ll elaborate on the benefits of this approach later.
Many classes become generic:
Message is now generic of the result that it generates.
Result is now generic of the value that it holds.
CollectionResult is now generic of the type of the child values that it contains
pipeline is generic of the type of the result of the last item in the pipeline
group is generic of the type of the result of its children
@actor
def add(a: int, b: int) -> int:
return a + b
add.message(1, 2) # This is now Message[Result[int]]
add.message(1, 2).result # this is now Result[int]
pipeline(message(1, 2), message(1)) # this is now pipeline[Result[int]]
group(message(1, 2), message(1)) # this is now group[Result[int]]
pipeline now expects to receive a tuple as an input. It used to only expect an iterable. At runtime, passing a list will still work but it will generate errors if you use a type checker. The benefits of this approach will be explained below.
Enhancements of the type system¶
The changes presented above allow us to have various enhancements in the type system:
previously calling an actor synchronously could be made without any typechecking on the args ans kwargs passed to it. This is no longer possible and the args and kwargs passed are expected to the be the same as the ones defined in the underlying function.
@actor
def add(a: int, b: int) -> int:
return a + b
add(1, "2") # this is now an error
Type checkers can now infer the type of the result of a single message, a group or a pipeline.
@actor(store_results=True)
def add(x: int, y: int) -> int:
return x + y
@actor(store_results=True)
def _print(x: str) -> None:
print(x)
@actor(store_results=True)
def stop(x: Any) -> None:
return
result = add.message(1, 2).result.get() # inferred type is Result[int]
# inferred type is Generator[int, None, None]
results = group([add.message(1, x) for x in range(10)]).results.get()
# It also works if tasks are heterogeneous. Inferred type here is Generator[Union[int, None], None, None]
results = group([add.message(1, 2), _print.message("hello")]).results.get()
# inferred type is int
result = pipeline((add.message(1, 2), add.message(1))).result.get()
# This works even with complex pipelines
# pyright can infer that this will return Result[None]
# mypy in its development version can do the same
# but current stable version infers this as Never
reveal_type(pipeline((_print.message("a"), _print.message(), stop.message())).result)
`2.1.0`_ – 2023-09-08¶
Added¶
worker: do workerThread logging in a middleware to be able to override its behavior
`2.0.0`_ – 2023-07-20¶
Breaking changes¶
update pydantic dependency from <2 to >=2.0 (only for remoulade[pydantic])
`1.2.4`_ – 2023-07-03¶
Added¶
sqlalchemy: add future=True in init PostgresBackend
`1.2.3`_ – 2023-06-09¶
Added¶
PostgresBackend: add pool_pre_ping=True as pessimistic approach for SQL connections
`1.2.2`_ – 2023-05-23¶
Fix¶
PydanticEncoder return value encoding
`1.2.1`_ – 2023-05-17¶
Fix¶
PydanticEncoder accept None as return value
`1.2.0`_ – 2023-05-17¶
Fix¶
Adjust package version with pypi. This version add no changes.
`1.1.2`_ – 2023-05-17¶
Fix¶
Make Pydantic imports not mandatory
`1.1.1`_ – 2023-05-17¶
Fix¶
Make Pydantic imports not mandatory
`1.1.0`_ – 2023-05-16¶
Added¶
add actor name in the BackendResult result
Create Pydantic encoder
`1.0.1`_ – 2023-05-11¶
Fix¶
group: fix cancel_on_error option
`1.0.0`_ – 2023-05-04¶
Breaking changes¶
update redis dependency from 3.5 to 4.5
`0.60.0`_ – 2023-04-26¶
Added¶
actor: Type send/message/send_with_options/message_with_options typing
current_message: fix return type
`0.59.0`_ – 2023-04-06¶
Added¶
sqlalchemy: make sqlalchemy1.4 suitable to 2.0
`0.58.0`_ – 2023-03-02¶
Added¶
redis/result: group get result in one redis pipeline
`0.57.0`_ – 2023-03-02¶
Added¶
middleware/pipeline: added increase_priority_on_retry actor option
`0.56.0`_ – 2023-02-06¶
Added¶
cli: added a –termination-timeout argument
`0.55.0`_ – 2023-01-25¶
Added¶
result: add an async_get method
state/backend: add an async_get_result method on ResultBackend
`0.54.2`_ – 2022-08-10¶
Fix¶
worker: add a limit to the logged extra when the message fails
0.54.1 – 2022-08-10¶
Added¶
state/backend: put back StubStateBackend
0.54.0 – 2022-08-09¶
Added¶
state/backend: put back RedisStateBackend
0.53.0 – 2022-07-26¶
Added¶
middleware/pipeline: propagate trace context (if any) to the next element in pipe_target
0.52.0 – 2022-07-26¶
Added¶
middleware/age_limit: add AgeLimitException and raise it if max_age is exceeded
0.51.0 – 2022-06-29¶
Added¶
middleware/pipeline: add pipe_on_error actor option to send errors/exception to next actor
0.50.1 – 2022-06-27¶
Fix¶
Group completion: initialize variable to prevent exception
0.50.0 – 2022-05-06¶
Added¶
middleware: add an extra_default_middleware array for middleware that need to be instantiated before
any broker exists
0.49.0 – 2022-04-28¶
Added¶
middleware: add remove_middleware method
0.48.1 – 2022-04-28¶
Fixed¶
logging: fix logging level when retrying store_result
0.48.0 – 2022-04-06¶
Changed¶
redis: add retry to get_result by default
0.47.0 – 2022-04-05¶
Changed¶
compositions: transaction parameter becomes optional to use default broker one by default
Added¶
RabbitMQ: add group_transaction parameter to use transaction for pipelines and group
RabbitMQ: do not use confirm_delivery during transaction
0.46.2 – 2022-03-29¶
Fix¶
Group completion: use ttl from message
0.46.1 – 2022-03-28¶
Fixed¶
apisepc: validate only if request is actually json and not empty.
tests: test_rabbitmq_cli: use test rabbitmq_broker instead of real rabbitmq broker.
0.46.0 – 2022-03-28¶
Changed¶
Test python 3.10 and improve linters.
Remove deprectaed python 3.6 syntax.
Added¶
Services: rabbitmq, redis, postgresql URL can be specified through env vars.
Add dockerfile for composition example and auto build it.
0.45.0 – 2022-03-16¶
Changed¶
Remove support for python 3.6
Added¶
RabbitMQ: add transactions support
0.44.0 – 2022-03-15¶
Added¶
RabbitMQ: pass delivery confirmation as message option and actor option
0.43.4 – 2022-03-14¶
Fixed¶
RabbitMQ: revert delivery_mode to 2 by default
0.43.3 – 2022-03-14¶
Fixed¶
RabbitMQ: make delivery_mode configurable (set to 1 by default)
0.43.2 – 2022-03-10¶
Fixed¶
RedisCancelBackend: consider the message as not cancelled if error while connection to redis
0.43.1 – 2022-03-02¶
Fixed¶
RabbitMQ: check message confirmation when confirm_delivery=True
dependencies: allow for bigger flask version
0.43.0 – 2022-02-02¶
Changed¶
Prometheus: add option use_default_prometheus_label and DEFAULT_LABEL to reduce cardinality
Prometheus: only declare metrics for actors which are executed by the worker
0.42.6 – 2021-12-09¶
Fixed¶
local: do not catch errors in execution
0.42.5 – 2021-11-19¶
Changed¶
redis: fix completed_count when no message
0.42.4 – 2021-11-09¶
Changed¶
retry: change log warning message when a message will not be retried due to its retry_when option to be more explicit
0.42.3 – 2021-11-09¶
Changed¶
api: /messages/requeue route is now POST instead of GET
api: /messages/requeue route will now return 400 status code if there is a State middleware and the given id does not match any message’s id
api: trying to enqueue a message or add or update a scheduled job with an actor name that doesn’t match an existing actor’s name will return a 400 status code
state: renamed get_states and get_states_count argument selected_ids to selected_message_ids
state: add a selected_composition_ids to get_states and get_states_count to filter
api: passing a timezone aware datetime in a job will now return a 400 status code
0.42.2 – 2021-11-05¶
Added¶
api: add swagger to the api
0.42.1 – 2021-10-29¶
Added¶
broker: add all relevant events to the local broker
0.42.0 – 2021-10-28¶
Changed¶
cancel: when any message of a composition fails with cancel_on_error set to True, the whole composition will now be canceled
compositions: cancel_on_error can now be set on a pipeline as well by passing it to the constructor
0.41.1 – 2021-10-28¶
Fixed¶
state: fix sorting by column in Postgres Backend get_states
Changed¶
api : removed the possibility of sorting states by args, kwargs and options in /messages/states route
0.41.0 – 2021-10-22¶
Added¶
compositions: add a composition id to messages to identify which pipeline or group they belong to.
state : the state middleware and api will no longer return incomplete compositions
Removed¶
state: removed stub and redis backends
0.40.2 – 2021-09-29¶
Fixed¶
api: Fixed scheduler api schema
0.40.1 – 2021-09-29¶
Added¶
states: Added queue_name to states
0.40.0 – 2021-09-29¶
Added¶
api: Add new routes to create, update and delete scheduled jobs
0.39.3 – 2021-09-21¶
Changed¶
state: the ‘Pending’ state will now be saved before enqueueing instead of after. If the enqueue fails, the state will be marked as failed after the enqueueing.
0.39.2 – 2021-09-20¶
Changed¶
middleware: when adding a middleware to a broker that already has a middleware of this type, it will now replace the middleware.
0.39.1 – 2021-09-17¶
Fixed¶
states: states data will no longer be deleted on Postgres State Backend initialisation when database is already in correct version
0.39.0 – 2021-09-16¶
Added¶
state: add new Postgres State Backend
compose: add new docker-compose file to easily run all the services necessary to remoulade
api: add new /messages/states DELETE route to delete states from the Postgres State Backend
api: add new arguments to /messages/states and /groups route to filter results by actor, status, id, start_datetime and end_datetime with Postgres State Backend.
Changed¶
api: change /messages/states and /groups routes from GET to POST
api: sorting by column is no longer supported with Redis and Stub State Backends
0.38.1 – 2021-09-16¶
Changed¶
catch_error: the CatchError on_failure option can now be a Message when passed to message options
0.38.0 – 2021-09-14¶
Added¶
actor: add the possibility of passing several additional queues to the actor, and then of choosing which one of those queue to enqueue to when sending a message.
0.37.2 – 2021-09-14¶
Fixed¶
scheduler: add lock to scheduler sync_config function
0.37.1 – 2021-09-13¶
Added¶
exceptions: add exception chaining
0.37.0 – 2021-09-09¶
BREAKING CHANGE¶
callbacks: remove the Callbacks Middleware
catch_error: rename option from cleanup_actor to on_failure
Changed¶
catch_error: add the CatchError middleware to the default middlewares
0.36.1 – 2021-09-09¶
Changed¶
broker: removed default_after and default_before and replaced them with a list that determines the middleware order
0.36.0 – 2021-09-03¶
Added¶
max_tasks: added new middleware MaxTasks that enables stopping a worker after processing a set amount of tasks
0.35.0 – 2021-09-02¶
Added¶
catch_error: added new middleware CatchError that enables enqueuing an actor when a message fails and won’t be retried
0.34.2 – 2021-09-02¶
Fixed¶
scheduler: Make tests use conftest fixtures
Added¶
scheduler: added stop function that will stop the scheduler at the end of its cycle
0.34.1 – 2021-08-31¶
Changed¶
results: added default_timeout argument to Result Backend to allow setting the default result timeout
0.34.0 – 2021-08-20¶
Changed¶
retries: max_retries parameter is now also taken into account when using retry_when parameter
0.33.2 – 2021-08-19¶
Fixed¶
retries: fix exponent computing
0.33.1 – 2021-08-19¶
Changed¶
state: rename State attribute ‘name’ with more explicit name ‘status’
0.33.0 – 2021-08-16¶
Changed¶
logging_metadata: adds a new middleware which enables passing logging metadata into the message and generating this metadata by passing a callback function that returns the metadata
0.32.0 – 2021-08-13¶
Changed¶
retries: adds the possibility of choosing between multiple backoff strategies
0.31.4 – 2021-08-09¶
Changed¶
api: adds option route which sends the list of available options
api: searches using the /messages/states now include the args, kwargs and options values
api: the /actors route now sends the actors’ arguments as well
0.31.3 – 2021-08-06¶
Fixed¶
time-limit: use background thread instead of signals
0.31.2 – 2021-08-03¶
Fixed¶
main: only log info when worker has stopped
0.31.1 – 2021-07-28¶
Fixed¶
include messages with values evaluated as false in sort_dict return data
0.31.0 – 2021-07-26¶
Changed¶
Middleware : The value of all broker and middleware options are now obtained with the middleware get_option_value method
Middleware : The value returned is from higher to lower priority : message option, actor decorator option, broker option and default value.
Middleware : It is now possible to send any option with either message, actor or broker when it makes sense
0.30.6 – 2021-07-23¶
Fixed¶
Doc: fix doc requirements
0.30.5 – 2021-07-21¶
Changed¶
Doc: add getting started
0.30.4 – 2021-07-09¶
Fixed¶
Doc: fix all build errors
Changed¶
add type hints
0.30.3 – 2021-05-20¶
Fixed¶
Prometheus: initialise message_start_times in each thread
0.30.2 – 2021-05-20¶
Broken do not use¶
Fixed¶
Prometheus: wrong usage of threading.local
0.30.1 – 2021-05-20¶
Broken do not use¶
Fixed¶
Prometheus: initialize labels at worker boot and only if not None
0.30.0 – 2021-05-18¶
Broken do not use¶
Changed¶
Prometheus: message_duration is now a Summary
Prometheus: remove useless metrics
Prometheus: actor_name label can be overridden with prometheus_label argument of actor
0.29.1 – 2021-05-14¶
Fixed¶
State: avoid call to state_backend if state_ttl <= 0
0.29.0 – 2021-04-23¶
Added¶
Results: add possibility to set store_results at the message level
0.28.3 – 2021-04-22¶
Fixed¶
TimeLimit: add lock when accessing shared variable
0.28.2 – 2021-04-20¶
Fixed¶
Typing: fix typing for actor overload and add types for broker, result and scheduler
0.28.1 – 2021-04-20¶
Fixed¶
Typing: fix typing for group init and actor overload
0.28.0 – 2021-04-19¶
Added¶
ResultBackend: make it more resilient, retry if save fails
0.27.0 – 2021-04-06¶
Added¶
Middleware: add MaxMemory which stop a worker if its amount of resident memory exceed max_memory
0.26.7 – 2021-04-01¶
Added¶
Typing: add support for typing and several type hints
0.26.6 – 2021-02-11¶
Fixed¶
Result: catch when error cannot be serialized
0.26.5 – 2020-12-04¶
Changed¶
Logging: only log a warning when a message will be retried
0.26.4 – 2020-11-26¶
Dependencies¶
update
pytz
0.26.3 – 2020-11-12¶
Added¶
Worker: add exception name to
Failed to process message
log.
0.26.2 – 2020-11-04¶
Fix¶
Priority: actor.priority is now used if priority is not present in message.options
0.26.1 – 2020-10-27¶
Changed¶
Prometheus: add a registry parameter
0.26.0 – 2020-10-26¶
Changed¶
TimeLimit
: Replace SIGKILL with regular sys.exit and make this behavior disabled by defaultRabbitmq: reconnect on connection error with exponential back-off
Prometheus: add remoulade_worker_busy metric
0.25.1 – 2020-09-04¶
Changed¶
Logs: Add truncated args and kwargs to
Started Actor
log.
0.25.0 – 2020-09-03¶
BREAKING CHANGE¶
Remoulade now use only use one process (and remove watch feature), remove
--proccess
options and--watch
option.
Added¶
TimeLimit
: send SIGKILL after delay (default: 10s) if exception fails
Changed¶
Allow more recent version of
pytz
0.24.0 – 2020-08-19¶
BREAKING CHANGE¶
allow 0 as remoulade_restart_delay env variable, which will disable consumer restart in case on connection error and return a RET_CONNECT error code (default is now 0)
0.23.0 – 2020-08-05¶
Added¶
Class
MessageSchema
to load the data sent to enqueue a message.- Attribute to the class
State
group_id
- Attribute to the class
- GET methods to
api
url
/actors
: get declaredactors
- url
/groups
: get declaredgroups
schema
PageSchema
- url
- url
/messages/results/<message_id>
: get the results of agiven message_id
if the result is bigger than
max_size
defined inget_results
return a empty string.
- url
- url
/messages/requeue/<message_id>
: requeue a message asociated with a message_id Requeue messages associated with a
pipe_target
is not support yet.
- url
- GET methods to
Method
as_dict
to classactor
.Error
NoScheduler
raised when is tried to get an scheduler and there is not.Error Handler in case of
NoScheduler
Schema
PageSchema
to load the arguments send tomessages/state
Method
as_dict
ofState
can receive keywordexclude_keys:tuple
to exclude some keys from serialization
Changed¶
hmset
tohset
in classRedis
as the former is deprecated, this requires at least Redis 4.0.0 and at least redis-py 3.5.0- Method
api
get_states
now - can receive arguments defined in schema
PageSchema
search_value
sort_column
a column defined inState
, this column must be sortablesort_direction
possible values:['asc', 'desc']
, the order you want to get the registersize_page
default100
: number of messages you want to retrieve
- can receive arguments defined in schema
if
search_value
is defined thesearch_keys
is alist
declared inremoulade.api.main.py
. The current supported columns to search are["message_id", "name", "actor_name", "args", "kwargs"]
- Method
Fix¶
make
max_size
an argument ofStateBackend
and fix its behavior
0.22.0 – 2020-06-04¶
Added¶
- Attributes to the class
State
actor_name(str)
priority(int)
enqueued_datetime(date)
started_datetime(date)
end_datetime(date)
progress
- Attributes to the class
Use of
pipelines
inget_state
andset_state
forRedis
- Url to
api
to get all scheduled jobs url
/scheduled/jobs
- Url to
Method
set_progress
in ClassMessage
, the progress is update usingset_state
of Classes typeStateBackend
InvalidProgress
raised when is tried to set a progress less than 0 or greater than 1- POST method to
api
to enqueue a message url
/messages
- POST method to
Changed¶
Signature
asdict
of ClassState
toas_dict
Location of
_encoded_dict
and_decoded_dict
, now is in the classStateBackend
set
tohmset
in classRedis
Behaviour of
set_state
of classes typeStateBackend
. If the message_id does not exist, a new register is created, if not it updates the fields in the state, without deleting those who are not present.- Save the datetime for states
Pending, datetime of enqueued saved in
enqueued_datetime
if Started datetime saved in
started_datetime
if Failure datetime saved in
end_datetime
if Success datetime saved in
end_datetime
Allow to define States with name=None, to be able to update the progress without passing the name again
0.21.0 – 2020-05-07¶
Added¶
Error
NoStateBackend
raised when is tried to access aStateBackend
in a broker without itAttribute
messaged_id
in ClassState
Method
get_states
which returns the states storage in aStateBackend
Method
get_state_backend
inbroker.py
- Module
api
with methods to get the state of a message by HTTP request: url
/messages/states
returns all states in the backendurl
/messages/states?name=NameState
returns all states in the backend whose state is equal to NameState, this should be defined in StateNamesEnumurl
/messages/state/message_id
return the state of a givenmessage_id
- Module
Class
TestMessageStateAPI
responsible to test the API ofStateBackend
Add Flask as an extra dependency
Add
CurrentMessage
Middleware that exposes the current message via a thread local variable, useful to access the message within the actorAdd
CurrentMessage
to the list ofdefault_middleware
- Add new POST method
cancel_message
in moduleapi
url
/messages/cancel/message_id
- Add new POST method
0.20.0 – 2020-04-07¶
BREAKING CHANGE¶
reduce: now take a size argument and a merge_kwargs argument. size determine the number of message that are taken at each reduce (merge) step and the merge_kwargs are the attributes that will be passed to the merge messages.
Added¶
- StateNamesEnum (type :Enum) contains the possible states that can have a message:
Started a
Message
that has not been processedPending a
Message
that has been enqueuedSkipped a
Message
that has been skippedCanceled a
Message
that has been cancelledFailure a
Message
that has been processed and raise an ExceptionSuccess a
Message
that has been processed and does not raise an Exception
- Class
State
represents the current state of a message, the state is defined by: StateNamesEnum.name the name of the state
args The arguments of the message, they are storage if they are less than MessageState.max_size
kwargs The keyword arguments of the message, they are storage if they are less than MessageState.max_size
- Class
- Middleware
MessageState
used to update the state of a message in a Backend, the constructor receives backend (type :
StateBackend
)state_ttl
max_size
- Middleware
Abstract Backend
StateBackend
with methodsset_state
andget_state
to set and get aState
from the BackendRedis
andStubBackend
(type :StateBackend
)InvalidStateError
raised when is tried to create an Invalid State
0.19.0 – 2019-01-31¶
BREAKING CHANGE¶
result: when passing raise_on_error=False to a function to get a result (message, group, backend), the returned object in case of error is an instance of ErrorStored instead of the FailureResult singleton value.
0.18.3 – 2019-01-29¶
Fix¶
redis: result ttl was set to null when get_result was called with block=True and forget=True
0.18.2 – 2019-01-24¶
Fix¶
build: relax version limit on prometheus_client
0.18.1 – 2019-12-30¶
Fix¶
generic: Fix error when abstract=False
0.18.0 – 2019-12-05¶
Added¶
generic: allow Meta inheritance
0.17.0 – 2019-08-22¶
Added¶
Rabbitmq: add dead_queue_max_length
Fix¶
Channel pool: use LIFO queue instead of FIFO queue
0.16.2 – 2019-08-01¶
Fix¶
Pipeline: build should be consistent
0.16.1 – 2019-07-11¶
Fix¶
Scheduler: put scheduler outside of main module
0.16.0 – 2019-06-28¶
Added¶
Channel pool: prevent the opening of one channel per thread (#91)
0.15.0 – 2019-05-24¶
Added¶
Remoulade scheduler (#86)
0.14.0 – 2018-04-09¶
Changed¶
Added¶
Raise error when starting worker with LocalBroker (#84)
0.13.0 – 2018-03-20¶
Added¶
Add log on start/end of group completion
Fix¶
Store group message_ids in backend (#79)
0.12.0 – 2018-03-14¶
Added¶
Log message args and kwargs in extra field when error
Changed¶
Local broker do not declare its middleware anymore
0.11.0 – 2018-03-08¶
Remove¶
Cancelable option in
Cancel
and as actor option.
0.10.0 – 2018-02-28¶
BREAKING CHANGE¶
higher priorities are now processed before to be consistent with rabbimq
Added¶
Remove¶
ResultNotStored error (fix bug when store_results is set at middleware level)
0.9.0 – 2018-01-18¶
Added¶
Cancel
middleware, and acancel
method to prevent processing of messages which have been enqueuedcancel_on_error
which cancel all group members on member failure.
0.8.2 – 2018-12-31¶
Fixed¶
Workers wait for RMQ messages to be acked upon shutdown.
Pipelines no longer continue when a message is failed.
0.8.1 – 2018-12-17¶
Fixed¶
Declare queues on each ConnectionError even if the queue has already been declare (before a worker restart was needed if a queue was deleted)
RedisBackend.get_result saving a ForgottenResult every time
0.8.0 – 2018-12-07¶
Added¶
Added Result
completed
without needing to get the full result, also true withcompleted_count
.
Fixed¶
Failure of children of pipeline when a message fail (in the case of pipeline of groups)
0.7.0 – 2018-12-04¶
Added¶
Changed¶
Remove support for group of groups, a
group
take as input apipeline
or a messageget_result_backend
now raise NoResultBackend if there is noResultBackend
Merged PipelineResult and GroupResult into
CollectionResult
get_result
on forgotten results now returns NoneUpdate redis-py to 3.0.1
0.6.0 – 2018-11-23¶
Fixed¶
Better handling of RabbitMQ queue declaration (consumer will keep trying on ConnectionError)
Changed¶
Prevent access to
Message
result if the linked actor do not have store_results=True
Added¶
Add Prefetch multiplier to cli parameters
0.5.0 – 2018-11-15¶
Breaking Changes¶
Added property result to
Message
(type:Result
), andpipeline
(type: PipelineResult) and results togroup
(type: GroupResults). These new Class get the all result linked logic (get instead of get_result)Rename MessageResult to
Result
Removed get_results from
Message
,group
andpipeline
(and all results related method like completed_count, …). Use the new result property forMessage
andpipeline
, and results forgroup
.
0.4.0 – 2018-11-15¶
Changed¶
Rename FAILURE_RESULT to FailureResult (for consistency)
Added¶
Add MessageResult which can be created from a message_id and can be used to retrieved the result of the linked message
Fixed¶
Clear timer on before_process_stop
0.3.0 – 2018-11-12¶
Changed¶
get_result
has a forget parameter, if True, the result will be deleted from the result backend when retrievedRemove support for memcached
Log an error when an exception is raised while processing a message (previously it was a warning)
0.2.0 – 2018-11-09¶
Changed¶
Results
now stores errors as well as results and will raise anErrorStored
the actor failget_result
has a raise_on_error parameter, True by default. If False, the method return FailureResult if there is no Error else raise anErrorStored
.Middleware
have adefault_before
anddefault_after
to place them by default in the middleware listPrometheus removed from default middleware
0.1.0 – 2018-10-24¶
Added¶
A
LocalBroker
equivalent to CELERY_ALWAYS_EAGER.
Changed¶
Name of project to Remoulade (fork of Dramatiq v1.3.0)
Delete URLRabbitmqBroker
Delete RedisBroker
Set default max_retries to 0
Declare RabbitMQ Queue on first message enqueuing
Fixed¶
pipe_ignore was not recovered from right message