bamboo-engine
bamboo-engine copied to clipboard
Engine and BambooDjangoRuntime ProcessMixin are confusing
BambooDjangoRuntime的集合多个mixin 正常来说, 如果我想更改其中某一个功能, 例如Process的某些行为, 例如die 的方法, 我可以
class BambooDjangoRuntime(
CustomProcessMixin,
)
或者
class CustomeRuntime(BambooDjangoRuntime):
def die(self, process_id: int):
do something()
但是经过测试这不符合预期。 因为我发现在pipeline/eri/celery/tasks.py
里面execute
和 schedule
的方法里面:runtime = BambooDjangoRuntime()
, runtime 是hardcode的, 即调用Engine(CustomeRuntime()).run_pipeline(pipeline)
时不会调用CustomeRuntime().die
方法的。
文档没有特别说明, 另外一点是在自编写的component 里面, 如果在自定义组件的实例里面也无法保存属性, 只能通过data来传递。 因为每一次自定义component的schedule的调用都是一个新对象。
lastly, 能否将类似ProcessMixin或者一些其他类似的update 方法:e.g Process.objects.filter(id=process_id).update(suspended=True, suspended_by=by)
改为
obj = Process.get(id=process_id)
obj.suspended=True
obj.suspended_by = by
obj.save()
这用用户可以利用Django post_save的signal 去做一些自定义的行为。 例如我希望Process die的时候可以回调推送数据到websocket。