0

我正在尝试创建一个装饰器,它将自动对某些功能进行排队。

import functools
from rq import Queue
from worker import conn

q = Queue(connection=conn)

def fire_and_forget(func):
    @functools.wraps(func)
    def queue_function(*args, **kwargs):
        try:
            q.enqueue(func, *args, **kwargs)
        except Exception as exc:
            print('QUEUING FAILED')
            print(str(exc))
            print(func)
            return None

    return queue_function

然后我有一些功能可以说,

@fire_and_forget
def add(x, y):
    return x + y

但是,这不起作用,因为入队的函数是 fire_and_forget 函数,该函数将另一个 fire_and_forget 函数入队,依此类推。工人们不停地排着队。

有什么办法解决这个问题?我一直试图弄清楚几个小时无济于事:\

4

0 回答 0