设置拒绝x溢出后如何获取拒绝信息':'reject-publish'

时间:2019-06-25 02:10:18

标签: celery

我正在使用celery / rabbitmq,我想在队列达到最大长度后得到确认,它确实拒绝了最新任务,但是我无法通过队列ID获得任何有用的信息。我怎么知道它已被队列ID拒绝?

我阅读了有关celery和rabbitmq的文档,似乎没有任何功能可以通知我任务已被拒绝,只有处理死信队列的方式。我不需要dlx,我想拒绝它并获得状态。如果被拒绝,我现在所能得到的就是状态值/状态,该值处于待处理状态,并且永远不会改变,对我没有用。

CELERY_QUEUES = (
    Queue(
        'test',
        exchange=Exchange('test'),
        routing_key="test",
        queue_arguments={'x-max-length': 3, 'x-overflow': 'reject-publish'}
    ),
)

...
def query_tx(req, id):
    result = AsyncResult(id=id)
    print(dir(result))

    if result.ready():
        res, status = result.get()
        print(res, status)
        if status == '1':
            dit = {'status': status, 'tx_hash': res}
        print(dit)
        return JsonResponse(dit)
    print('status :-1')
    return JsonResponse({'status': -1})

0 个答案:

没有答案