我所有的Django模型都取决于第三方API的结果。为了保证HTTP调用成功完成,我创建了一组celery任务来保存/删除任何模型来链接它们。一般来说,这些看起来像:
@shared_task
def create(model_data_dict, ModelClass):
new_model = ModelClass(**model_data_dict)
new_model.save()
结合HTTP调用,celery任务链类似于
from celery import chain
from model_tasks import create
def create_a_model(model_data_dict):
chain(
call_http_api.s(model_data_dict) |
# Use the result from the HTTP API to create the model
create.s(AModelClass)
)
现在我正在徘徊,如果有更多的Django友好的方法吗?((更开箱即用的东西)。我已经检查了Django on-commit transaction,但这些似乎是针对一个用例,其中任务的结果并不重要。