Простой способ создать API для какой-то задачи
Бессерверные вычисления – это модель выполнения облачных вычислений, в которой поставщик облачных услуг выделяет машинные ресурсы по требованию, заботясь о серверах от имени своих клиентов.
Бессерверные вычисления не хранят ресурсы в энергозависимой памяти; вычисления скорее выполняются короткими пакетами, а результаты сохраняются в хранилище.
Когда приложение не используется, ему не выделяются вычислительные ресурсы. Цены основаны на фактическом количестве ресурсов, потребляемых приложением.
Но в бессерверной версии все еще есть серверы, но они абстрагированы от разработки приложений. Поставщик облачных услуг выполняет рутинную работу по подготовке, обслуживанию и масштабированию серверной инфраструктуры. Разработчики могут просто упаковать свой код в контейнеры для развертывания.
Роль бессерверных вычислений в цифровой трансформации:
Бессерверные вычисления играют важную роль в цифровой трансформации. Во-первых, это позволяет разработчикам работать более продуктивно, помогая им сосредоточиться на написании кода, имеющего ценность для бизнеса, не беспокоясь о базовой инфраструктуре, которая будет поддерживать этот код. Независимо от вертикальной отрасли или размера компании, стратегия бессерверных вычислений может помочь повысить производительность разработчиков за счет устранения накладных расходов на управление.
К особенностям среды разработки программного обеспечения для бессерверных вычислений относятся:
- Управление нулевым сервером
- Автоматическое масштабирование для удовлетворения меняющихся требований к трафику
- Управляемая интегрированная безопасность
К основным поставщикам бессерверных вычислений относятся:
- Облачные функции Google
- АВС Лямбда
- Облачные функции IBM
- Функции Microsoft Azure
Бизнес-проблема:
Развертывание кода для Автоматического редактирования видео и предоставление ссылки на видео пользователю
Решение:
Получите статический файл из облачного хранилища и сделайте видео, затем вы должны сохранить это видео в облачном хранилище и поделиться ссылкой на данные, которые хранятся в облачном хранилище.
Здесь я использовал Google Cloud Function для развертывания.
Требования:
# Function dependencies, for example: # package>=version moviepy~=1.0.3 Pillow~=8.2.0 google-cloud-storage~=1.40.0 NumPy
Для извлечения данных из облачного хранилища я использовал библиотеку Google-cloud-storage.
Облачное хранилище Google позволяет хранить данные в инфраструктуре Google с очень высокой надежностью, производительностью и доступностью и может использоваться для распространения больших объектов данных среди пользователей посредством прямой загрузки.
Я использовал ведро, откуда извлекал файлы и сохранял их обратно
client = storage.Client() bucket = client.get_bucket("video_editor_data")
Как получить данные из пути облачного хранилища в облачную функцию
bucket.list_blobs(prefix=’Project_video_editing/output/’):
Получить изображение из URL-адреса в облачную функцию
response = requests.get(url, stream=True) img2 = Image.open(io.BytesIO(response.content))
Получить тип шрифта из облачного хранилища
# Custom font style and font size font= bucket.blob("Project_video_editing/HELVETICAINSERATLTSTD-ROMAN.OTF") myFont = ImageFont.truetype(io.BytesIO(font.download_as_bytes()),60)
Здесь я использовал tmp-память облачной функции, где я могу загрузить статический файл и сохранить его. Из-за этого нет необходимости каждый раз загружать статический файл.
mp4_1= bucket.blob("Project_video_editing/part1.mp4") mp4_1.download_to_file(open("/tmp/part1.mp4", "wb")) clip1 = VideoFileClip("/tmp/part1.mp4")
Проблема, с которой я сталкиваюсь при этом, заключается в том, что нет прямого способа сохранить файлы в облачном хранилище из облачной функции.
Небольшой хак, я создал временный файл в памяти tmp для записи и передачи
temp_output="/tmp/outputx.mp4" with open(temp_output, 'w') as fp: pass
Изменив направление указателя ОС и сохранив там файл с именем .mp4 в памяти tmp.
finl.write_videofile("/tmp/testing.mp4",temp_audiofile=temp_output)
Затем, наконец, загрузите этот файл в облачное хранилище из памяти tmp.
output_blob = bucket.blob("name_of_save_file.mp4") output_blob.upload_from_filename("/tmp/testing.mp4")
Использовать URL-адрес триггера в качестве API для обращения
В бессерверной модели разработчик может написать функцию на своем любимом языке программирования и опубликовать ее на бессерверной платформе. Поставщик облачных услуг управляет инфраструктурой и программным обеспечением и сопоставляет функцию с конечной точкой API, прозрачно масштабируя экземпляры функции по требованию.
Вывод:
Serverless Store состоит как из приложения, так и из функций. Это гибрид, в котором центральным элементом является стандартное (традиционное, если хотите) веб-приложение Python flask, а также множество важных и дополнительных функций, обслуживаемых Cloud Functions. Для людей, предпочитающих шаблон FaaS, с относительно небольшими усилиями можно сделать бессерверное хранилище чисто функциональным; вы также можете легко вернуть его обратно в веб-приложение вообще без работников облачных функций, готовое к развертыванию виртуальной машины.
Весь код вы можете найти здесь…
Автоматическое редактирование видео с помощью Python…
Спасибо, что прочитали эту статью…