gpt4 book ai didi

Django-Celery - 从管理页面重新提交任务?

转载 作者:行者123 更新时间:2023-12-02 11:41:50 34 4
gpt4 key购买 nike

我目前正在开发一个使用 Django 1.3 和 Django-Celery 应用程序的项目。非常棒,顺便说一句,我建议任何不熟悉 celery 的人都看看。

我对管理页面功能有一个具体问题:

我们正在使用 celery 任务向第三方合作伙伴进行 RESTful API 调用。这些调用实际上是由用户操作启动的,因此您可以看到 celery 任务在这种情况下非常有用。

我们有一个关于管理员如何在由于某种原因失败时重新发送回调的用户故事。现在,如果回调因标准 HTTP 响应失败而失败,我们将使用 celery 重试机制以不同的时间间隔自动重新发送它们。然而,这些回调可能是针对数千个合作伙伴之一(是的,有很多),并且并非所有合作伙伴都会使用标准 HTTP 响应代码作为其失败响应。

长话短说,我在网上找不到任何可以通过管理界面重新发送 celery 任务的内容。我希望有人能对此有所启发。这似乎是一个非常明显的功能,如果没有这样的功能,我相信这是有充分理由的。如果没有办法做到这一点,如果有人可以解释原因,我会很高兴。只是想了解更多有关 celery 内部工作原理的信息。

谢谢大家!抱歉我的啰嗦,有时我会胡言乱语。

最佳答案

您可以尝试两种方法,

1:模型中的小黑客:

您可以使用 bool 字段并将其命名为 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)

这只是一个想法,您可以自己决定如何以及何时将 celery 任务提交回来。

2:扩展管理模板:

您可以扩展管理模板并放入指向重新提交任务的 View 的超链接。

关于Django-Celery - 从管理页面重新提交任务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6796068/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com