Функция 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
#Apple
Apple Store 上线国家补贴,仅限北京上海
🔗Apple Store (中国大陆)
Apple Store 官方在中国大陆上线了国家补贴,购买 iPhone、iPad 或指定配置 Apple Watch 最高优惠 RMB 500。商品总价须低于 RMB 6000。购买符合条件的 Mac 机型最高优惠 RMB 2000。升级配置不可享受补贴优惠。仅限 Apple Store 在线商店 (北京收货地址) 和 Apple Store 零售店 (上海地区)。
常见问题
符合资格的消费者购买参与活动的 iPhone、iPad、Apple Watch 时,可享商品到手价基础上再立减 15% 的国家补贴,每件补贴不超过 500 元,仅限到手价不超过 6000 元的单件商品;购买参与活动的 Mac 时,可享商品到手价基础上再立减 20% 的国家补贴,每件补贴不超过 2000 元。如该产品同时参与 Apple 或其合作伙伴提供的其他优惠活动,优惠额度部分不计算国家补贴。实际补贴金额以商品购买页面展示为准。
符合资格的消费者每类产品仅可享补贴 1 件。
参与国家补贴的订单仅可包含 1 件参与活动的商品。若订单包含多个商品,则该订单中的所有商品均无法享受国家补贴。
参与国家补贴的订单不支持与 iPhone 年年焕新计划、Apple Trade In 换购计划或 AppleCare+ 服务计划同时下单购买。
参与国家补贴的订单不支持保价退差。
Apple Store 在线商店:参与国家补贴的 Apple Store 在线商店订单不支持 Apple Store 零售店取货服务、快送服务,不支持定制化服务、镌刻服务。按照政府的相关规定,参与国家补贴的 Apple Store 在线商店订单对签收时间有特殊要求。消费者须在下单之日起 6 天内完成签收,否则订单将被取消,商品由承运商取回。在承运商经尝试送货,消费者无法签收的情况下,订单可能会被取消。商品发货日期超过一定期限的非现货商品可能无法享受国家补贴。请在商品购买页面确认是否具备补贴活动参与资格。参与国家补贴的 Apple Store 在线商店订单不支持部分退款,不支持收货地址更改,不支持换货。参与国家补贴的 Apple Store 在线商店订单需在签收快递时配合承运商完成现场拆封、激活及拍照存档等国家补贴政策所要求的操作。如无法在签收当场完成激活或配合拍照存档等操作,订单将被取消,商品由承运商取回。
Apple Store 零售店:于上海地区 Apple Store 零售店参与活动的消费者,在享受国家补贴时,必须出示身份证件,提供姓名,用以按要求开具个人实名信息的发票。参与国家补贴的 Apple Store 零售店订单不支持部分退款,不支持换货,不支持部分付款方式,不支持定制化服务。参与国家补贴的 Apple Store 零售店订单,购买后需在门店配合工作人员完成现场拆封、激活及拍照存档等国家补贴政策所要求的操作。如不能在购买当场完成激活或配合拍照存档等操作,则无法享受国家补贴。
本次活动仅针对个人消费者。参与国家补贴的订单仅支持开具个人的增值税普通发票 (如需发票抬头,仅可开具消费者本人实名信息),不支持变更抬头,不支持企业抬头。
#Promotions#AppleStore
📮 频道 @AppPie