我目前正在使用Django 1.3和Django-Celery应用程序开展项目。顺便说一句,这非常棒,我建议任何不熟悉芹菜的人都会检查出来。
我对管理页面功能有一个具体问题:
我们正在使用celery任务向第三方合作伙伴发出RESTful API调用。这些调用实际上是由用户操作启动的,因此您可以看到芹菜任务在这种情况下如何非常有用。
我们有一个用户故事,讲述了如果管理员由于某种原因失败,应该如何重新发送回调。现在,如果回调因标准HTTP响应失败而失败,我们将使用芹菜重试机制以不同的间隔自动重新发送它们。但是,这些回调可能是成千上万的合作伙伴之一(是的,很多),而且并非所有合作伙伴都会使用标准的HTTP响应代码作为失败响应。
长话短说,我无法在网上找到任何可以通过管理界面重新发送芹菜任务的内容。我希望有人可以对此有所了解。这似乎是一个非常明显的功能,如果没有这样的功能,我相信它有充分的理由。如果没有办法,如果有人能解释原因,我会喜欢它。只是好奇了解芹菜的内部运作。
谢谢大家!对不起我的啰嗦,有时我倾向于絮絮叨叨。
答案 0 :(得分:2)
您可以尝试两种方法,
1:模特中的小黑客:
您可以使用布尔字段并将其命名为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:扩展管理模板:
您可以扩展管理模板并添加指向重新提交任务的视图的超链接。