带有MongoDB结果后端和Neo4j存储的Celery



我有一些Celery工作线程将他们的结果存储在MongoDB后端。这似乎运作良好。但是,我还需要将唯一的任务ID(以及其他一些任务结果元数据)存储在Neo4J图形数据库中。

我的主要目标是从 Neo4J 中引用任务结果,而不会用数千个结果将其弄乱。因此,Neo4J为任务结果提供了可视化功能。

我需要一些关于使用芹菜实现这一目标的最佳方法的建议。

以下是我一直在玩的一些选项:

  1. 使用 Celery 的子任务并创建由不同工作人员处理的单独任务,将数据发送到 Neo4J。
  2. 使用 Celery 的 HTTP 回调任务 (Webhooks) 将数据直接发布到 Neo4J 的 REST API
  3. 扩展主要任务以包括对 Neo4J 的 REST API 的调用
将调用 Neo4J

作为子任务排队可以提高任务的粒度,并权衡一致性(Neo4J 中的数据将赶上 MongoDB 中的数据)。

您可以子类化celery.Task并覆盖芹菜。Task.after_return这样它就可以task_id保存到 Neo4J。请注意,retval可能是未捕获的异常。

最新更新