【问题标题】:DocuSign API slow response issue,DocuSign API 响应慢的问题,
【发布时间】:2020-05-11 18:19:17
【问题描述】:

我正在尝试使用 DocuSign java API 更新信封文档的内容,但 DocuSign 使用相同的参数在 4 到 38 秒的范围内响应相同信封的请求。

例如,一次需要 5 秒,第二次或第三次 API 调用可能需要 35 秒。

我使用此端点 PUT /v2/accounts/{accountId}/envelopes/{envelopeId}/documents 并在 requestBody 中将 EnvelopeDefinition 与包含 documentBase64 内容的嵌套文档列表放在一起。

此外,参数 apply_document_fieldspersist_tabs 设置为 true

DocuSign Java 客户端版本为“2.9.0”。

我试图在不同的环境和不同的地方(网络)上运行我的代码,但我不明白这个端点的执行时间差异如此之大的原因是什么。

也许有人遇到过这样的问题,可以提示我一些我错过的设置或我没有通过的参数?

对于我们的项目来说,恒定的执行时间少于 30 秒是至关重要的。 我很欣赏你的任何建议。谢谢!

附:我只遇到上述端点的问题。

其他端点如:

PUT /v2/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/tabs, 要么 ET/v2/accounts/{accountId}/envelopes/{envelopeId}/recipients/{recipientId}/tabs,或者其他一些人或多或少同时被执行。

复制于github:https://github.com/docusign/docusign-java-client/issues/129

【问题讨论】:

  • 提高速度的一种方法是使用二进制传输而不是 base64 编码。你想试试吗?
  • 二进制传输只能用于POST请求(信封创建),但我不需要创建一个新的,我需要更新现有信封中的文档。
  • 欢迎来到 StackOverflow!请检查(接受)您问题的最佳答案。请为您阅读的所有有用答案(包括您的问题和其他人的问题)投票。是的,您既可以投票也可以检查一个很好的答案!

标签: docusignapi


【解决方案1】:

在 DocuSign 系统中添加(或更新)文档是一项艰巨的工作,其中包括以下(以及更多):

  • 如果文档不是 pdf 格式,则将其转换为 pdf。
  • pdf 被“扁平化”以删除 pdf 中的任何无关程序。
  • 分析和更新 pdf 以添加适合文档和信封的选项卡和选项卡值。
  • 上述大部分操作都是在特定文档的专用沙箱实例中完成的,以消除文档导致安全问题的任何可能性。 (请记住,所有类型的文档文件都是计算机病毒的主要载体。)
  • 将文档存储在多个地理上不同的冗余文件存储系统上,以提供极高的数据存储保证。

底线,以上需要时间。花费的时间也与文档大小成比例。转换步骤也需要很长时间。

如果更新完全相同的一组文档所需的时间有所不同,这可能是因为系统负载,也可能是因为我们在努力改进上述处理流程时进行了许多 A/B 测试。 -- 我们有积极的工程项目来改进上述所有方面。

帮助它更快(或似乎更快)

如果您的 DocuSign 应用程序正在发送超过几 MB 的文档文件,那么您可能希望转为以二进制格式而不是 Base64 格式发送文档。一个使用Java is available 的示例。

但真正的问题是,如果您的应用程序正在添加文档,而人类正在玩弄他们的拇指。如果是这样的话,那么:

  • 一次更新一个文档并向用户提供状态:“上传文档 1 of 3...完成。上传文档 2 of 3...完成。等等”
  • 不要阻塞主线程。例如,使用户能够继续执行其他任务并让文档在后台更新。
  • 如果用户应该等待上传完成,请为他们提供忙碌指示器和倒计时。

    倒计时:对于我的应用,我的测试显示了最大时间有多长。 (在您的情况下为 35 秒)。然后我制作了一个更长的javascript倒数计时器。并每秒更新计数两到三次,以使事情变得更快。

    例如,最大延迟 35 秒,计划它可能需要两倍的时间,70 秒。然后制作一个从 150 开始并每秒减少两次的计数器。结果,作业将始终在计数器达到 0 之前完成。用户会“高兴”,因为他们看到正在取得进展(计数器正在减少)并且它在达到 0 之前完成(“它'提前'完成了!” )

    倒计时时间(比忙碌指示器更重要)是一个古老的魔术师把戏,将用户的注意力从实际动作转移到其他事情(倒计时)。它运作良好。参考:Tog on Interface

【讨论】:

  • 感谢您的解释。我们还考虑了一个微调器,但这就像我们要走的最后一条路。关于二进制格式,正如我上面回答的那样,只有在创建信封时才有可能,但我们不需要新的,我们需要更新现有的文档,但 PUT 请求没有这样的选项。
  • 我很确定您可以为我们所有的电话发送二进制文件。但是,考虑到如今的互联网速度,传输时间的减少通常并不多(除非您拥有非常大的文档)。
  • 不,两个文件的总大小都是 1MB。我尝试编辑您为二进制发送提供的示例,将 POST 替换为 PUT,并添加了 /{envelopeId} (在这里我得到了与 API "/v2/accounts/{accountId}/envelopes/{envelopeId }"),但我收到了“数据格式不正确”或“接受数据格式不正确”之类的错误,记不太清了,总的来说,它没有成功。
猜你喜欢
  • 1970-01-01
  • 2020-05-04
  • 1970-01-01
  • 2019-07-18
  • 1970-01-01
  • 2022-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多