Reject/Fail delays are not respected
See original GitHub issue@cenkalti We have just realized that the implementation for #49 is buggy.
Here is a simple reproduction:
import logging
logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(threadName)s %(message)s')
from kuyruk import Kuyruk
kuyruk = Kuyruk()
@kuyruk.task(retry=5, fail_delay=10000, reject_delay=10000)
def echo(message):
logging.info("ECHO: %s", message)
if message == 'raise an exception':
raise Exception()
Here is how I run it:
>>> import tasks
>>> tasks.echo('raise an exception')
And here is the output (notice that all the retries happen immediately with no delays and the traceback is printed at the very end after retries exceeded):
2017-03-13 15:03:02,510 MainThread Start from server, version: 0.9, properties: {'platform': 'Erlang/OTP', 'product': 'RabbitMQ', 'information': 'Licensed under the MPL. See http://www.rabbitmq.com/', 'cluster_name': 'rabbit@211f2b25e5f9', 'copyright': 'Copyright (C) 2007-2016 Pivotal Software, Inc.', 'capabilities': {'consumer_cancel_notify': True, 'direct_reply_to': True, 'publisher_confirms': True, 'consumer_priorities': True, 'basic.nack': True, 'connection.blocked': True, 'authentication_failure_close': True, 'per_consumer_qos': True, 'exchange_exchange_bindings': True}, 'version': '3.6.6'}, mechanisms: ['PLAIN', 'AMQPLAIN'], locales: ['en_US']
2017-03-13 15:03:02,511 MainThread Open OK!
2017-03-13 15:03:02,511 MainThread Connected to RabbitMQ
2017-03-13 15:03:02,511 MainThread using channel_id: 1
2017-03-13 15:03:02,512 MainThread Channel open
2017-03-13 15:03:02,513 MainThread Opened new channel
2017-03-13 15:03:02,513 MainThread queue_declare: kuyruk
2017-03-13 15:03:02,514 MainThread basic_consume: kuyruk
2017-03-13 15:03:02,514 MainThread Consumer started
2017-03-13 15:03:10,875 MainThread Processing task: {'sender_cmd': '/mnt/storage/miniconda3/bin/ipython', 'id': '6903605007ed11e7a58928b2bd03b9d9', 'args': ['raise an exception'], 'module': 'tasks', 'sender_timestamp': '2017-03-13T13:03:10', 'function': 'echo', 'sender_pid': 26218, 'sender_hostname': 'redatopa', 'kwargs': {}}
2017-03-13 15:03:10,875 MainThread Importing module: tasks
2017-03-13 15:03:10,875 MainThread Applying <Task of 'tasks:echo'>, args=('raise an exception',), kwargs={}
2017-03-13 15:03:10,876 MainThread ECHO: raise an exception
2017-03-13 15:03:10,876 MainThread ECHO: raise an exception
2017-03-13 15:03:10,876 MainThread ECHO: raise an exception
2017-03-13 15:03:10,876 MainThread ECHO: raise an exception
2017-03-13 15:03:10,876 MainThread ECHO: raise an exception
2017-03-13 15:03:10,876 MainThread ECHO: raise an exception
2017-03-13 15:03:10,877 MainThread tasks:echo finished in 0 seconds.
2017-03-13 15:03:10,877 MainThread Task raised an exception
2017-03-13 15:03:10,877 MainThread Traceback (most recent call last):
File "/mnt/storage/miniconda3/lib/python3.5/site-packages/kuyruk/worker.py", line 217, in _process_task
task, args, kwargs)
File "/mnt/storage/miniconda3/lib/python3.5/site-packages/kuyruk/worker.py", line 266, in _run_task
return self._apply_task(task, args, kwargs)
File "/mnt/storage/miniconda3/lib/python3.5/site-packages/kuyruk/worker.py", line 288, in _apply_task
return task.apply(*args, **kwargs)
File "/mnt/storage/miniconda3/lib/python3.5/site-packages/kuyruk/task.py", line 166, in apply
return self.f(*args, **kwargs)
File "/mnt/storage/experiments/tasks.py", line 13, in echo
raise Exception()
Exception
2017-03-13 15:03:10,878 MainThread Task is processed
/cc @khorolets
Issue Analytics
- State:
- Created 7 years ago
- Comments:7 (7 by maintainers)
Top Results From Across the Web
Solved K10.3.13-T Question Help Use the departure delay
Answer to Solved K10.3.13-T Question Help Use the departure delay. ... E Click the icon to view the flight delay data. ... reject/fail...
Read more >module folktale/concurrency/task
A data structure that models asynchronous actions, supporting safe cancellation and automatic resource handling. This feature is experimental! This API is still ...
Read more >Delay is Not Denial - The Life
A delay is not denial, but a time of preparing you for the promise. It is very hard when we cannot “see” God...
Read more >Zealand Pharma Provides Update on Refocused Strategy
Company announcement – No. 18 / 2022 Interim report for Q1 2022 Zealand Pharma Provides Update on Refocused Strategy Prioritizing Research ...
Read more >sv3za - SEC.gov
We may not sell or buy these securities until the registration statement filed with ... We are making the Rescission Offer with respect...
Read more >Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start FreeTop Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
Top GitHub Comments
Hi @frol. Thanks for the detailed report. I couldn’t have a chance to take a look at this issue. I will do it as soon as I find some time. Sorry about being late.
The idea is interesting. However, I don’t recommend doing this because the task still consumes memory on the RabbitMQ server. If the worker does not get restarted, they will accumulate indefinitely.