我目前正在做一个项目,使用Django 1.3和Django-芹菜应用程序。它非常棒,顺便说一下,我建议任何不熟悉芹菜的人看看它。
我有一个关于管理页面功能的具体问题:
我们使用芹菜任务对第三方合作伙伴进行RESTful API调用。这些调用实际上是由用户操作启动的,因此您可以看到在这种情况下,芹菜任务是如何非常有用的。
我们有一个用户故事,关于管理员应该如何能够重新发送回调,如果它失败的原因。现在,如果回调因标准HTTP响应失败而失败,我们将使用芹菜重试机制以不同的间隔自动重新发送它们。然而,这些回调可能是对数千个合作伙伴中的任何一个(是的,有很多),并且并不是所有的合作伙伴都将使用标准的HTTP响应代码作为失败响应。
长话短说,我没能在网上找到任何可以通过管理界面重新发送芹菜任务的东西。我希望有人能解释一下。这似乎是一个非常明显的功能,如果没有这样的功能,我相信有一个很好的理由。如果没有办法,如果有人能解释原因,我会很高兴。只是想了解更多关于芹菜的内部工作原理。
谢谢大家!很抱歉我啰嗦了,有时候我有点东拉西扯。
您可以尝试两种方法,
1: Small hack in model:
你可以使用布尔字段,并将其命名为celery_retry,并在模型保存方法中做这样的事情。
def save(self, *args, **kwargs):
if self.celery_retry and self.user.is_superuser():
celery_task.apply_async()
self.celery_retry = False
super(MyModel, self).save(*args, **kwargs)
这只是一个想法,你可以自己决定如何和何时提交芹菜任务。
2:Extend admin template:
您可以扩展admin模板,并放入一个超链接到重新提交任务的视图