Приведите пример сохранения состояния обработчика субъекта Apify - PullRequest
0 голосов
/ 16 марта 2020

Документация Apify рекомендует обрабатывать

Сохранение состояния: В отличие от традиционных безсерверных платформ, актеры не имеют ограничений по продолжительности запуска актера. Однако это означает, что время от времени может потребоваться перезапуск актера, например, когда сервер, на котором он работает, должен быть выключен. Актеры должны учитывать эту возможность. Для краткосрочных актеров вероятность перезапуска довольно низкая, а стоимость повторных прогонов низкая, поэтому перезапуски можно игнорировать. Однако для длительно действующих субъектов перезапуск может быть очень дорогостоящим, и поэтому такие субъекты должны периодически сохранять свое состояние, возможно, в хранилище значений ключей, связанных с запуском субъекта. При запуске актеры должны сначала проверить, сохранено ли какое-либо состояние, и если это так, они должны продолжить с того места, где они остановились .

Пожалуйста, предоставьте пример актера:

  • периодически сохраняя свое состояние, возможно, при сохранении значения ключа, связанного
  • при запуске, актеры должны сначала проверить, сохранено ли какое-либо состояние
  • продолжить там, где они остановились

1 Ответ

0 голосов
/ 16 марта 2020

Текущее состояние сохраняется автоматически с помощью элементарных инструментов, таких как requestQueue и requestList, и для последних вы также можете запускать его вручную с более высокой частотой, как описано здесь: https://sdk.apify.com/docs/api/request-list#requestlistpersiststate

Если вы не используете классы искателя и вам необходимо сохранить некоторые пользовательские данные состояния во время выполнения актера, рекомендуется использовать хранилище значений ключей, где вы можете сохранять произвольные данные с правильным типом содержимого, как описано здесь: https://sdk.apify.com/docs/api/key-value-store#keyvaluestoresetvaluekey -value-options

Чтобы восстановить предыдущее состояние, вы можете загрузить данные о состоянии, сохраненные ранее снова из хранилища, в переменные, которые необходимо сохранить, чтобы восстановить предыдущее состояние в памяти , Если вы не укажете тип контента, он по умолчанию JSON, и когда вы загружаете его из хранилища значений ключей, вы можете использовать его непосредственно как объект, содержащий информацию о вашем состоянии, без необходимости дополнительного анализа.

...