Многопоточная работа с Google-таблицами (Версия 7.1.7.0 и выше)

1. ZennoPoster поддерживает многопоточную работу с Google-таблицами

Это значит, что к одной таблице можно обращаться через несколько потоков. При выполнении, для всех потоков будет один инстанс виртуальной таблицы, изменения из которой будут периодически синхронизироваться с таблицей в облаке.

2. Несколько копий ZennoPoster может работать с одной Google-таблицей

Но нужно учитывать, что изменения из программы поступают в облако не моментально, а в течении 60 секунд. Следовательно, эта задержка будет действовать между разными копиями программы ZennoPoster. В связи с чем для сохранения целостности данных рекомендуется использовать атомарное добавление строк, подключаемое в настройках статического блока.

3. Атомарное добавление строк

При включенной настройке атомарного добавления строки, добавленные действием “Добавить строку”, будут отправлены в облако специальным запросом, независящим от адресов ячеек. Это позволит гарантированно добавить новые данные в таблицу без потерь существующих вызываемых перезаписью уже заполненных ячеек.

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

Например, при следующей последовательности действий данные, добавленные действиями “Добавить строку” попадут в 11 и 12 строки в Google, находясь при этом в 6 и 11 строках в программе:

  1. Записали ячейки в 0-5 строки;

  2. Добавили строку (6 строка в программе);

  3. Записали ячейки в 7 - 10 строки;

  4. Добавили строку (11 строка в программе).

Исходя из чего при использовании атомарного добавления строк лучше добавлять данные только с помощью действия “Добавить строку”.

Несмотря на возможность безопасного добавления строк, их изменение и удаление может повлечь разногласия из-за задержки синхронизации между копиями программы и облаком. Ввиду чего для обработки ценных и важных данных рекомендуется использовать отдельный лист Google таблицы для каждой копии программы.

4. Как оптимизировать многопоточную запись данных в одну Google-таблицу

Для этого есть решение. Допустим, если Вы осуществляете парсинг каких-то данных пачками и складываете все результаты в одну Google-таблицу.

ZennoPoster устроен таким образом, что пытается всегда синхронизировать виртуальную таблицу и таблицу в облаке. Если имеется несколько копий ZennoPoster и/или таблица имеет много данных, синхронизация может занять много времени.

В таком случае, если Вам не нужны актуальные данные из таблицы в каждой копии ZennoPoster, Вы можете настроить режим быстрой записи через опцию Редактирование → Настройки → Google таблицы → Политика обработки изменений таблиц:

В этом режиме, каждая копия программы будет лишь отправлять данные, не заботясь о сопоставлении данных таблицы в облаке и данных в программе, то есть не будет тратить на это время.