Phi*_*ard 6 python django celery
抱歉,我还没有代码示例,因为我正在尝试弄清楚我的想法是否可以实现。
我正在编写一个 Django 应用程序来管理 Celery 任务。我用于django-celery-beat计划任务,但我想要一个类似的管理界面来启动临时任务,并使用接受参数的表单。我希望它与 IP 一起位于管理部分,因为这就是应用程序所做的全部工作;目前没有其他意见。
所有文档都ModelAdmin基于模型的自定义字段,但我认为该对象不需要存储在模型中,因为它们是瞬态的,并且数据将由 Celery 任务保存。据我从文档中了解到,您无法在不尝试模型的情况下注册自定义管理视图。
我正在寻找的是一个不与模型绑定的自定义视图,这样我就可以在管理部分为这些管理命令创建自定义表单。
我曾经有过的想法:
managed = False创建一个虚拟模型MetaModelForm任何指示表示赞赏。我将测试所有合理的答案并选择最好的作为正确答案,但会对所有回复投票。
编辑:@dejavu_cmd_delt 提出了Flower的很好建议,但如果可能的话,我想将其全部集成到该admin部分中。
django_celery_beat我放弃了:)这似乎是一种反模式,所以我放弃了这个想法,并基于临时任务的模型创建了一个简单的自定义模型。这使我能够利用ScheduledTask模型表单的任务检测方法,并使用pre_save钩子将创建任务发送给 Celery。然后,我创建了一个单独的 Django 应用程序来包含它并与 main 一起安装django_celery_beat。
这是该模型的副本,以防任何人使用它:
class AdhocTask(models.Model):
id = models.AutoField(primary_key=True)
description = models.CharField(blank=True, max_length=255)
regtask = models.CharField(null=True, max_length=200)
args = models.TextField(blank=True, default='[]',
help_text='JSON encoded positional args'
)
kwargs = models.TextField(blank=True, default='{}',
help_text='JSON encoded keyword args'
)
# SendAdhocTask is my management command that parses the AdhocTask instance
# and sends the task to a Celery task queue.
signals.pre_save.connect(SendAdhocTask, sender=AdhocTask)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1534 次 |
| 最近记录: |