1

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

我的主要目标是从 Neo4J 中获得对任务结果的引用,而不会因为成千上万的结果而混乱。因此,Neo4J 为任务结果提供了可视化功能。

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

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

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

1 回答 1

0

对 Neo4J 的调用作为子任务排队提高了任务的粒度,同时牺牲了一致性(Neo4J 中的数据将赶上 MongoDB 中的数据)。

您可以继承celery.Task和覆盖celery.Task.after_return以便保存task_id到 Neo4J。请注意,这retval可能是一个未捕获的异常。

于 2013-09-21T06:31:59.117 回答