⚡️ ПРИЁМ ДЛЯ ГЛАДКОЙ ПЕРЕДАЧИ ДАННЫХ В ASYNCIO

ПРИЁМ ДЛЯ ГЛАДКОЙ ПЕРЕДАЧИ ДАННЫХ В ASYNCIO — видео, канал «Python/ django» ▶ видео
⚡️ ПРИЁМ ДЛЯ ГЛАДКОЙ ПЕРЕДАЧИ ДАННЫХ В ASYNCIO 
 В сетевом Python можно «мягко» ограничивать скорость передачи данных без троттлинга на уровне сокета. 
Приём - отправлять данные кусками и вставлять короткий await asyncio sleep после каждого drain(): это отдаёт управление циклу, даёт шанс другим корутинам и предотвращает монополизацию CPU. 
Полезно в высоконагруженных стримерах. 
```python
 простой «мягкий» троттлинг передачи данных
import asyncio
CHUNK = 32_000
async def send_smooth(writer, data: bytes):
    for i in range(0, len(data), CHUNK):
        writer.write(data[i:i+CHUNK])
        await writer.drain()
        await asyncio.sleep(0)  # отдаём управление циклу
async def handle(reader, writer):
    payload = b"x" * 5_000_000
    await send_smooth(writer, payload)
    writer.close()
    await writer.wait_closed()
async def main():
    srv = await asyncio.start_server(handle, "0.0.0.0
", 8888)
    async with srv:
        await srv.serve_forever()
asyncio.run
(main())```
@pythonl
Просмотры: 177
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти