Функция asyncio.wait() это еще один способ вызвать множество асинхронных задач.
Она работает в нескольких режимах.
1. Самый простой - ждем завершения всех задач
async def main():
tasks = [asyncio.create_task(do_it(i)) for i in range(10)]
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.ALL_COMPLETED
)
for task in done:
try:
print(task.result())
except Exception as e:
print(e)
Очень похоже на gather, но работает не так.
▫️возвращает не результаты, а два сета с объектами Task у которых можно забрать результат через task.result() если они в списке done
▫️не гарантирует порядок результатов так как оба объекта это set
▫️не выбрасывает исключение когда оно появляется, а сохраняет его в Task. Исключение появится когда попробуете забрать резултьтат.
2. Ждем завершения первой задачи, даже если там ошибка.
async def main():
tasks = [asyncio.create_task(do_it(i)) for i in range(3)]
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.FIRST_COMPLETED
)
# в done может быть несколько задач!
for task in done:
try:
print(task.result())
except Exception as e:
print(f"Fail: {e}")
# Оставшиеся задачи в pending, как правило, нужно отменить, иначе они будут продолжать работать
for task in pending:
task.cancel()
В сете done будут таски которые успели завершится, причем как успешно так и нет.
3. До первой ошибки.
Тоже самое, но с аргументом FIRST_EXCEPTION
done, pending = await asyncio.wait(
tasks,
return_when=asyncio.FIRST_EXCEPTION
)
Функция завершается как только первая задача упадет с ошибкой.
Учтите, что в любом случае done вы можете обранужить несколько задач, как с ошибками так и успешные.
↗️ Полный листинг примеров здесь
#async
🛒Представили Play Service TrustedTime API
Для тех приложений, которым важно получать настоящее время, а не то, что установлено на устройстве пользователем, всегда приходилось решать вопрос, откуда его взять. Теперь же появилось стандартизированное API.
// Создаем клиента для работы с Trusted Time API
val initializeTrustedTimeClientTask: Task =
TrustedTime.createClient(activity)
val trustedTimeClient: TrustedTimeClient =
initializeTrustedTimeClientTask.await()
val curTime: Long? = trustedTimeClient.computeCurrentUnixEpochMillis()
// Используем системное время, если нет возможности получить из TrustedTime API
// Может не подойти в вашем случае
?: System.currentTimeMillis()
Поддерживается Android 5.0 и выше (SDK 21+)
#google#gms#android
🏝Play Integrity API: Защита вашего приложения от злоумышленников
Play Integrity API — это сервис Google Play для верификации подлинности и целостности вашего приложения. Простыми словами, это инструмент безопасности, который позволяет убедиться, что взаимодействие пользователя с вашим приложением происходит честно и легитимно
Суть работы API - на запрос из приложения вернуть вердикт о различных типах рисков:
👉 Несанкционированный доступ — проверяет, был ли установлено или оплачено через Google Play.
👉 Модификация кода — убеждается, что код приложения не был изменен. Поддельные устройства — проверяет, работает ли приложение на подлинном, сертифицированном Android-устройстве.
👉 Кроме того, API обнаруживает непатченные устройства — проверяет, установлены ли на девайсе свежие обновления безопасности.
👉 Опасные приложения — выявляет программы, которые могут контролировать экран или перехватывать данные.
👉 Автоматизированные атаки — определяет, не генерирует ли устройство аномально много запросов. И повторные попытки — проверяет, не пытается ли это же устройство совершить злоупотребление еще раз.
С помощью Play Integrity API вы можете предотвращать мошенничество — блокировать несанкционированные платежи и финансовые операции. Можно защищать от взлома — обнаруживать модифицированные версии приложения, распространяемые пиратами. API помогает бороться с читингом — предотвращать использование взломанных версий в играх. И, наконец, защищать пользователей — выявлять опасные приложения на устройстве, которые могут украсть данные.
По данным Google, приложения, использующие Play Integrity API, видят на 80% ниже несанкционированное использование по сравнению с другими приложениями. Крупные компании вроде Uber, TikTok, Stripe, Paytm уже интегрировали его себе.
⚠️ Play Integrity API работает не только на сертифицированных Google устройствах на базе Android, а значит там точно должны быть Google Play Services.
‼️ВАЖНО Никакая защита не может дать абсолютной гарантии безопасности, но это не значит что не нужно интегрировать решения, а то что надо следить за безопасностью вашего продукта, вовремя обновлять его защиту и предотвращать небезопасное использование, позвляющее украсть данные и имущество пользователя
#GooglePlay#Безопасность#GMS
🛒Приложения с Google Play Services смогут проверять была ли установка их продукта на устройстве, даже если происходил его сброс 🤯 Фича называется Device Recall
Приложения смогут сохранить и получить данные, связанные с конкретным устройством. Информация сохраняется на серверах Google, что позволит получить данные после переустановки и даже сброса устройства до заводских настроек.
#googleplay#gms#android#безопасность#googleio
B2B ASEAN принял участие в Форуме Меконга 2025 🇨🇳🇰🇭🇱🇦🇲🇲🇻🇳🇹🇭
30–31 июля в Пномпене (отель Shangri-La) состоялся Форум Меконга 2025 на тему «Устойчивое развитие субрегиона через новые экономические модели».
Участие B2BASEAN:
- Активное участие в дискуссиях о перспективах экономического сотрудничества
- Вклад в обсуждение ключевых направлений:
🌿 Зелёная экономика
👥 Социальная экономика
🎭 Креативные индустрии- Установление деловых контактов с представителями стран Большого Меконга
Итоги:
Форум стал важной площадкой для выработки стратегий устойчивого развития региона и укрепления партнёрских связей.
@b2basean
#Меконг2025#GMS#УстойчивоеРазвитие
🚢GMS: эскалация на Ближнем Востоке дестабилизирует рынки и тормозит рециклинг.
Глобальный покупатель флота на утилизацию - GMS - отмечает резкий рост волатильности на фоне конфликта на Ближнем Востоке.
Нефть за выходные подскочила более чем на 10% — с ~$63 до ~$71,9 за баррель.
Индекс Baltic Exchange прибавил 1,1%, при этом сегменты Capesize, Panamax и Supramax выросли на 0,2%, 1,4% и 3% соответственно — динамика пока сдержаннее, чем у нефтяных фьючерсов.
Валюты стран-основных переработчиков лома и цены на судовой листовой прокат снизились, пусть и умеренно. Активность на рынке утилизации отошла на второй план: продавцы и покупатели выжидают на фоне неопределённости и дефицита тоннажа, усугублённого геополитикой.
По оценке GMS,масштаб регионального шока сопоставим с периодом COVID по степени прямого и глобального воздействия.
Для отрасли это означает повышенную паузу в S&P-рециклинге, рост цен на бункер и риск дальнейшей турбулентности при затяжной эскалации.
📌GMS (Gulf Maritime Services LLC) — международный покупатель флота, основанный в 1992 году, специализируется на купле-продаже судов на утилизацию. Компания является частной и принадлежит основателям.
#ShipRecycling#GMS#OilPrices#DryBulk#Geopolitics