Asana API同步错误

时间:2017-05-23 16:35:22

标签: asana-api

我目前正在运行一个在Asana和Zendesk之间传递数据的应用程序。

我为Asana中的所有项目创建了webhook,所有项目事件都发送到我的webhook终点,验证请求并尝试识别事件并根据事件类型更新Zendesk的相关数据(某些事件不是'需要)。

但是我最近刚收到Webhooks的以下请求:

  "events": [
     {
      "action": "sync_error",
      "message": "There was an error with the event queue, which may have resulted in missed events. If you are keeping resources in sync, you may need to manually re-fetch them.",
      "created_at": "2017-05-23T16:29:13.994Z"
    }
  ]

现在因为我没有轮询API以获取事件更新,当事件到达时我会做出反应,我没有考虑使用同步密钥,文档建议只有在轮询事件时才需要这样做。使用Webhooks时是否需要使用?

我错过了什么?

提前感谢任何建议。

1 个答案:

答案 0 :(得分:0)

你是正确的,你不需要跟踪webhooks的同步密钥 - 当Asana中的某些内容发生变化时,我们会主动尝试与他们联系,我们会跟踪那些没有发生变化的事件但是已经通过webhooks交付(基本上,类似于我们在成功交付webhooks时更新同步密钥服务器端)。

基本上,这里发生的是由于某种原因,我们的事件队列检测到其内部状态存在问题。这意味着事件没有被记录,或者webhooks在很长一段时间后没有被发送。我们的活动和webhooks尝试以尽力而为的方式跟踪变化,并且我们的生产机器可能会发生一些可能导致这类问题的事情,例如机器在不合适的时间死亡。

不幸的是,回到良好状态的唯一方法是对您正在跟踪的项目进行全面扫描,这就是you may need to manually re-fetch them.的含义。基本上,强大的实施将Asana同步到外部资源看起来像:

  • 给定特定任务和外部资源的diff函数,检测每个资源之间的状态是否过时或不同,并选择合并/补丁解析(即"使Zendesk看起来像Asana")
  • 接收webhook会在" live"中运行该一个任务的diff / patch进程。方式。
  • 定期(在脚本启动时,比如说,或者当错过webhooks / events时,你会收到这样的错误消息)更新扫描整个项目可能遗漏的所有资源,并为每个任务执行diff / patch。这样更贵,但应该更加罕见。