0

Apify 文档建议处理

状态持久性: 与传统的无服务器平台不同,参与者对参与者运行的持续时间没有限制。然而,这意味着一个actor可能需要不时地重新启动,例如当它正在运行的服务器要关闭时。参与者需要考虑这种可能性。对于短期运行的actors,重启的机会非常低,重复运行的成本也很低,因此可以忽略重启。但是,对于长时间运行的 Actor 而言,重新启动可能会非常昂贵,因此这些Actor 应该定期将其状态保持在与 Actor 运行关联的键值存储中。开始时,actors 应该首先检查是否存储了一些状态,如果有,他们应该从中断的地方继续

请提供一个演员的例子:

  • 定期保存它们的状态,可能保存到关联的键值存储
  • 在开始时,actors 应该首先检查是否存储了一些状态
  • 从他们离开的地方继续
4

1 回答 1

0

当前状态由基本工具自动持久化requestQueuerequestList对于后者,您还可以以更高的频率手动触发它,详见此处:https ://sdk.apify.com/docs/api/request-list#requestlistpersiststate

如果您不使用爬虫类并且需要在执行者的运行时保留一些自定义状态数据,建议使用键值存储,您可以在其中保存具有适当内容类型的任意数据,如下所述:https://sdk .apify.com/docs/api/key-value-store#keyvaluestoresetvaluekey-value-options

为了恢复之前的状态,您可以将之前保存的状态数据再次从存储中加载到您需要保存状态的变量中,以恢复内存中的之前的状态。如果您不指定内容类型,则默认为 JSON,当您从键值存储加载它时,您可以直接将其用作保存状态信息的对象,而无需进行额外的解析。

于 2020-03-16T16:06:07.207 回答