Python-RQ文档中提供的示例始终显示使用queue.enqueue()
将函数入队。例如:job = q.enqueue(count_words_at_url, 'http://nvie.com')
是否可以将一个特定对象示例的方法排队?如果可以,这是否被认为是合理的做法?
例如:
member = Member.objects.get(id=142)
job = q.enqueue(member.send_email())
如果以上问题的答案是否定的,那么建议采用什么样的模式来处理这种情况?
我考虑过的一个可能性是创建一个helper函数,它独立于Member模型。例如:
def send_member_email_bg_task(member_id):
Member.objects.get(id=member_id).send_email()
并按如下方式将其入队:
job = q.enqueue(send_member_email_bg_task, member.id)
我将非常感谢关于处理这一问题的最佳方法的建议。谢谢
1条答案
按热度按时间mqkwyuun1#
您可以将任何可排队的对象入队,在本例中,该对象是绑定方法
member.send_mail
,而不是调用member.send_email()
所产生的对象。由
member.send_email
生成的绑定方法 Packagemember
和type(member).send_email
,并且在调用时以member
作为其第一个参数来调用 Package 的函数。