Многопоточная работа с Google-таблицами (Версия 7.1.7.0 и выше)
Пожалуйста, ознакомьтесь с Правилами использования материалов на данном ресурсе
1. ZennoPoster поддерживает многопоточную работу с Google-таблицами
Это значит, что к одной таблице можно обращаться через несколько потоков. При выполнении, для всех потоков будет один инстанс виртуальной таблицы, изменения из которой будут периодически синхронизироваться с таблицей в облаке.
2. Несколько копий ZennoPoster может работать с одной Google-таблицей
Но нужно учитывать, что изменения из программы поступают в облако не моментально, а в течении 60 секунд. Следовательно, эта задержка будет действовать между разными копиями программы ZennoPoster. В связи с чем для сохранения целостности данных рекомендуется использовать атомарное добавление строк, подключаемое в настройках статического блока.
3. Атомарное добавление строк
При включенной настройке атомарного добавления строки, добавленные действием “Добавить строку”, будут отправлены в облако специальным запросом, независящим от адресов ячеек. Это позволит гарантированно добавить новые данные в таблицу без потерь существующих вызываемых перезаписью уже заполненных ячеек.
Учтите, что в таком случае строки будут отправлены отдельным запросом, при выполнении которого данные будут записаны последовательно в конец таблицы, из-за чего могут возникнуть разногласия между локальным представлением данных и представлением данных в облаке.
Например, при следующей последовательности действий данные, добавленные действиями “Добавить строку” попадут в 11 и 12 строки в Google, находясь при этом в 6 и 11 строках в программе:
Записали ячейки в 0-5 строки;
Добавили строку (6 строка в программе);
Записали ячейки в 7 - 10 строки;
Добавили строку (11 строка в программе).
Исходя из чего при использовании атомарного добавления строк лучше добавлять данные только с помощью действия “Добавить строку”.
Несмотря на возможность безопасного добавления строк, их изменение и удаление может повлечь разногласия из-за задержки синхронизации между копиями программы и облаком. Ввиду чего для обработки ценных и важных данных рекомендуется использовать отдельный лист Google таблицы для каждой копии программы.
4. Как оптимизировать многопоточную запись данных в одну Google-таблицу
Для этого есть решение. Допустим, если Вы осуществляете парсинг каких-то данных пачками и складываете все результаты в одну Google-таблицу.
ZennoPoster устроен таким образом, что пытается всегда синхронизировать виртуальную таблицу и таблицу в облаке. Если имеется несколько копий ZennoPoster и/или таблица имеет много данных, синхронизация может занять много времени.
В таком случае, если Вам не нужны актуальные данные из таблицы в каждой копии ZennoPoster, Вы можете настроить режим быстрой записи через опцию Редактирование → Настройки → Google таблицы → Политика обработки изменений таблиц:
В этом режиме, каждая копия программы будет лишь отправлять данные, не заботясь о сопоставлении данных таблицы в облаке и данных в программе, то есть не будет тратить на это время.