Releases: RSEmail/provoke
version 0.5.1
-
Fix a bug in the processes created by
add_local_worker
The
_LocalProcess
internal class was missing the expectedprocess_callback
attribute. Because the user has full control over the local process, theprocess_callback
is unnecessary so the attribute was simply set toNone
.
version 0.5.0
- Adds support for local workers for any processing that is not driven by an AMQP queue.
def log_frob_rate(state):
while True:
logger.debug('Frobs: {0}/min'.format(state.get_frobs()))
state.reset_frobs()
time.sleep(60.0)
app.add_local_worker(log_frob_rate, args=[my_state])
- You can now override the name of the result queue with the
result_queue
argument toapply_async()
.
result = app.tasks.my_task.apply_async(['arg1', 'arg2'],
send_results=True,
result_queue='my_results')
- Task result queues are no longer implicitly deleted once the first result is retrieved with calls to
AsyncResult
methods. You should explicitly callresult.delete()
to delete the queue if needed.
result = app.tasks.my_task.apply_async(['arg1', 'arg2'], send_results=True)
print result.get()
result.delete()
- Task result queues may get results from many workers. This is useful for tasks that are published to many workers, where each worker will publish a result. The
result.gather()
method will yield newAsyncResult
objects every time a result comes in.
results = app.tasks.my_task.apply_async(['arg1', 'arg2'],
send_results=True,
result_queue='my_results')
for res in results.gather():
print res.get()
version 0.4.1
-
Result queue prefix
The result queue had been fixed with names like
result_53fb9628-0760-44b9-b0f1-3539738f65b5
. With this release, theresult_
prefix is a class attribute and may be changed.
version 0.4.0
-
Plugin reloading
Re-loading the master process with a
SIGHUP
will now also reload all plugin modules. -
Renamed executable
The
provoke-worker
process is know simplyprovoke
. The arguments it takes are unchanged since version 0.3.2. -
Removed taskgroup concept
The confusing taskgroup concept has been changed into simply an AMQP exchange and routing key pair. If neither are overridden, the default behavior delivers to the default exchange with the name of the task as the routing key.
-
AMQP heartbeat thread
In worker processes, a separate thread is responsible for sending heartbeats at the agreed upon interval.
version 0.3.2
-
Changed to plugin system
Previously, provoke attempted to import a Python module given on the command-line or in a config file. Now, using Plugin Discovery, known plugins are made available by name.
-
Configurable logging
A separate logging configuration file can be specified in a provoke configuration file, which will be loaded using logging.config.fileConfig.
version 0.2.3
Expanded Python support:
- CPython 2.6+
- CPython 3.3+
version 0.2.1
version 0.2.1
version 0.1.0
version 0.1.0
version 0.0.0
shuffle around where things happen