芹菜与MongoDB结果后端和Neo4j存储

时间:2013-09-17 21:25:45

标签: python mongodb neo4j celery

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

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

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

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

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

1 个答案:

答案 0 :(得分:0)

将调用Neo4J作为子任务进行排队可以提高granularity of tasks的一致性(Neo4J中的数据将会赶上MongoDB中的数据)。

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