Функция 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
Tonnel Network Chooses Self-Hosting Over High Vercel Costs
#Vercel#SelfHost
Tonnel Network switched to self-hosting their Marketplace MiniApp due to costly charges from Vercel exceeding $1000. They opted for a more economical server rental option.
Source: link
@tonlines
#typescript#examples#nextjs#vercel
Vercel offers ready-to-use templates and examples that help you quickly start web projects with best practices and optimized settings, especially for frameworks like Next.js. These templates save you time by handling setup and deployment details, letting you focus on coding. You can also contribute your own examples easily using provided commands and guidelines. Vercel automatically checks your code style and quality before commits, ensuring clean code. Plus, it integrates with Git and runs tests before deployment to catch bugs early. This makes building, deploying, and maintaining fast, reliable web apps much easier and faster for you.
https://github.com/vercel/examples
🎮 DOOM запустили на ChatGPT
Люблю наблюдать за тем, как эту легенду запускают на разных устройствах — видел даже запуск на огромном битном «компьютере» с «экраном» в майнкрафте не так давно.
Тут тоже интересно: после предварительной подготовки прямо в диалоге с ChatGPT открывается 🧙
Нет, ChatGPT не пишет с нуля код всей игры, разочарую вас🐸
Делал тот же чувак, который ранее предложил вариант captcha (бесячего теста, что ты не робот) с проверкой твоих навыков стрельбы в DOOM 😁
Душные пояснения для тех, кому интересно, как так получилось:
Разработчик взял шаблон ChatGPT App на Next.js, добавил инструмент play_doom и задеплоил всё на Vercel.
Chatgpt не просто описывает игру, а реально запускает рабочий Doom прямо в чат: серверный и клиентский рендеринг работают одновременно.
- Пояснения, как работает эта связка ChatGPT+Vercel
- Оригинальный пост
⚠️ Видео и пост из X (бывший Twitter), который сейчас запрещен в РФ.
#ИИ#ChatGPT#DOOM#AI#NextJS#Vercel#GameDev