Надежное решение этой проблемы - использование Google Dataflow. В настоящее время я использую его именно для этого, создавая CSV-файлы в облачном хранилище Google, которые содержат все ~ 500 тыс. Записей, соответствующих данному запросу хранилища данных.
Настройка может быть немного сложна.
Перед тем, как начать, я использовал Google Task Queue, который имеет 10-минутный тайм-аут вместо 30-секундного. Я не уверен, можете ли вы сделать это исключительно в облачных функциях или вам нужно создать простой проект движка приложения, который будет выполнять функции обработчика запросов для этих задач
Ну, так как у Вас есть обработчики сигналов, я собираюсь предположить, что Вы находитесь на варианте Unix. Раз так:
socket(2)
.Так, это совершенно допустимо в Вашем обработчике сигналов. Как Вы делаете свой обработчик сигналов, знающий, какое число использовать зависит от языка, Вы пишете в, который Вы не указывали. Существует два подхода, которые будут работать на в значительной степени любом языке
close
и выход, просто назовите выход. Или устанавливает действие сигнала для установки по умолчанию, который является выходом. Ядро закроет сокеты.Обычно, желательно не сделать что-либо очень в обработчике сигналов; кроме набора флаг.
Затем, когда управление возвращается к Вашему основному циклу, можно исследовать этот флаг, выйти из цикла, близких сокетов, выполнить деструкторы на объектах и т.д. и выйти чисто.
В обработчики сигналов можно зайти почти любое время, включая посреди C или вызовов библиотеки C++, которые могли быть проблемой.