Я создаю функцию Firebase, которая захватывает изображения с веб-страницы, указанной пользователем. Моя текущая реализация загружает изображения с помощью axios и сохраняет их с помощью fs в локальный каталог проекта функции. Мне удалось протестировать функцию только локально, поэтому я не уверен, как она будет работать в продакшене.
Поскольку файлы сохранены локально, что произойдет, если несколько пользователей вызовут функцию одновременно с разными веб-страницами? Будут ли файлы перезаписывать друг друга?
Спасибо
Относительно вашего второго вопроса. Возможность перезаписи файлов друг другом будет строго зависеть от вашего кода. Вам нужно написать функцию, которая является идемпотентной в том смысле, что вам нужно гарантировать, что каждый файл, загружаемый в локальный каталог функции, имеет другое имя. Вам также нужно быть осторожным с ошибками OOM, так как загружаемые файлы будут занимать место в ОЗУ, выделенное для вашей функции. Я рекомендую вам просмотреть документы, чтобы получить дополнительную информацию.
Поскольку файлы сохранены локально, что произойдет, если несколько пользователей вызовут функцию одновременно с разными веб-страницами? Будут ли файлы перезаписывать друг друга?
Параллельные вызовы будут выполняться на отдельных экземплярах. Cloud Functions автоматически создает столько экземпляров, сколько необходимо, и уменьшает масштаб при снижении нагрузки.
Пожалуйста, ограничьтесь одним вопросом в сообщении. Поскольку первый касается инфраструктуры Google Cloud Functions, я ответил на него ниже. Но второй больше касается вашего конкретного варианта использования, поэтому другие могут лучше подойти для ответа на него. Я рекомендую опубликовать этот второй вопрос снова в новом посте.