Три способа выполнить множество задач с asyncio
Функция для примера:
async def do_it(n):
await asyncio.sleep(random.uniform(0.5, 1))
return n
1. Последовательный вызов
async def main():
for i in range(100):
result = await do_it(i)
Такой вызов имеет смысл только тогда, когда результат одной задачи требуется для вызова следующей.
Если они независимы, то это антипаттерн, так как аналогичен простому синхронному вызову по очереди.
2. Упорядоченный результат
async def main():
tasks = [do_it(i) for i in range(100)]
results = await asyncio.gather(*tasks)
Выполняет корутины конкурентно и возвращает результат в виде списка.
Полезен когда требуется получить результаты в том же порядке в котором задачи отправлены.
3. Результат по мере готовности
tasks = [asyncio.create_task(do_it(i)) for i in range(100)]
for cor in asyncio.as_completed(tasks):
result = await cor
Так же выполняет корутины конкурентно, но не гарантирует порядок. Результат возвращается по мере готовности, каждый отдельно.
Полезен когда нужно обработать любой ответ как можно скорее.
#async
• На хабре есть очень хороший лонгрид по Docker, в котором описаны механизмы контейнеризации + примеры, эксперименты и реализация. Подойдет новичкам, кто хотел погрузиться в данную тему.
• Краткое содержание:
➡Chroot как первый популярный механизм, с помощью которого можно изолировать процесс в контексте файловой системы;
➡Namespaces как механизм, представляющий собой прослойку между желанием процесса получить ресурс и самим ресурсом;
➡Cgroups как ещё один механизм изоляции процессов, но только уже в контексте физических ресурсов системы;
➡OverlayFS как способ экономить место за счёт хитрой работы с файловыми системами контейнеров. Самое главное, поняли почему Docker слоёный пирог :);
➡Стандарт OCI как вещь, на которой держится вся современная контейнерная инфраструктура и утилиту runC, являющуюся эталонной реализацией OCI.
➡Читать статью [33 min].
#Docker
#docker
🐳
Docker & Kubernetes: The Practical Guide
Learn Docker, Docker Compose, Multi-Container Projects, Deployment and all about Kubernetes from the ground up!
-----
Main channel: @repo_science
Coupons: @freecoupons_reposcience
-----
👣 Docker Escape.
• Очень крутой и содержательный урок (вебинар) про различные методы, которые злоумышленник может использовать для побега из контейнера Docker, а ещё мы разберем необходимые шаги для успешного побега на понятных примерах. Также обсудим причины возникновения таких уязвимостей и разберём, какие меры можно принять, чтобы предотвратить побег из контейнеров по следующим сценариям:
➡SYS_ADMIN;
➡SYS_PTRACE;
➡SYS_MODULE;
➡DAC_READ_SEARCH;
➡DAC_OVERRIDE;
➡docker soсket.
➡️https://youtu.be/biC3TO7OELY
➡️https://github.com/aleksey0xffd/docker-escape
#Docker
👩💻 Play with Docker — онлайн-сервис для практического знакомства с Docker.
• Интересный и уникальный ресурс для изучения Docker, который был создан еще в далеком 2017 году. Идея заключается в том, что после авторизации нас пересылает на один из облачных хостов, где стартует 4-часовая сессия «игровой площадки». В ней вы можете создавать новые сущности (instances), т.е. узлы тестового Docker-кластера. Каждый из них — это инсталляция легковесного дистрибутива Alpine Linux с редактируемым локальным IP-адресом. В них установлен Docker актуальной версии:
https://labs.play-with-docker.com
• А чтобы начинающим пользователям Docker было проще и лучше понять, чем же вообще можно (и полезно) заниматься в игровой площадке Docker, авторы Play with Docker дополнили свой сервис удобным ресурсом по обучению:
➡️https://training.play-with-docker.com
• Дополнительная информация есть на GitHub: https://github.com/play-with-docker/play-with-docker
#Docker
👩💻 Play with Docker — онлайн-сервис для практического знакомства с Docker.
• Интересный и уникальный ресурс для изучения Docker, который был создан еще в далеком 2017 году. Идея заключается в том, что после авторизации нас пересылает на один из облачных хостов, где стартует 4-часовая сессия «игровой площадки». В ней вы можете создавать новые сущности (instances), т.е. узлы тестового Docker-кластера. Каждый из них — это инсталляция легковесного дистрибутива Alpine Linux с редактируемым локальным IP-адресом. В них установлен Docker актуальной версии:
https://labs.play-with-docker.com
• А чтобы начинающим пользователям Docker было проще и лучше понять, чем же вообще можно (и полезно) заниматься в игровой площадке Docker, авторы Play with Docker дополнили свой сервис удобным ресурсом по обучению:
➡️https://training.play-with-docker.com
• Дополнительная информация есть на GitHub: https://github.com/play-with-docker/play-with-docker
#Docker
👩💻Attacking Docker.
• Статья включает в себя описание актуальных методов атак на Docker, описание различных уязвимостей и неправильных конфигураций, слабых мест в различных компонентах и другую полезную информацию:
- Privileged Container;
- Exposed Container APIs;
- Container Escape;
- Container Image Tampering;
- Insecure Container Configuration;
- Denial-of-Service (DoS);
- Kernel Vulnerabilities;
- Shared Kernel Exploitation;
- Insecure Container Orchestration;
- Insecure Container Images;
- References.
#Docker
👩💻 Docker guide.
• Ловите полезную и объемную (50 страниц) шпаргалку по Docker, которая содержит примеры различных команд и их пояснение.
• К слову, у авторов этого материала есть еще множество различных шпаргалок, в основном для разработчиков, но может быть кто-нибудь из Вас найдет для себя полезный материал: https://www.jsmastery.pro/resources?category=all
#Docker