【问题标题】:Asana API Sync ErrorAsana API 同步错误
【发布时间】:2017-05-23 16:35:22
【问题描述】:

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

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

但是我最近收到了来自 Webhook 的以下请求:

  "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 以获取我在事件到达时做出反应的事件更新,所以我没有考虑使用 Sync 密钥,文档建议仅在轮询事件时才需要这样做。使用 Webhooks 时也需要使用一个吗?

我错过了什么?

提前感谢您的任何建议。

【问题讨论】:

    标签: asana-api


    【解决方案1】:

    您说得对,您不需要跟踪 webhook 的同步密钥 - 当 Asana 发生变化时,我们会主动尝试与他们联系,并且我们会跟踪尚未通过 webhook 传递的事件 (本质上,类似于我们在成功交付 webhook 时更新同步密钥服务器端)。

    基本上这里发生的情况是,出于某种原因,我们的事件队列检测到它们的内部状态存在问题。这意味着事件没有被记录,或者 webhook 在很长一段时间后没有被传递。我们的事件和 webhook 尝试尽最大努力跟踪变化,我们的生产机器可能会发生一些可能导致此类问题的事情,例如机器在不合时宜的时间死机。

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

    • 一个差异函数,在给定特定任务和外部资源的情况下,检测每个资源之间的哪些状态已过期或不同,并选择合并/补丁解决方案(即“让 Zendesk 看起来像 Asana”)
    • 接收 webhook 以“实时”方式运行该任务的 diff/patch 进程。
    • 定期(例如,在脚本启动时,或者当 webhooks/events 丢失并且您收到类似这样的错误消息时)通过扫描整个项目更新所有可能丢失的资源,并为每个任务执行差异/补丁。这更昂贵,但应该更加罕见。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-15
      • 1970-01-01
      • 1970-01-01
      • 2017-01-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多