MagicStack / MagicStack/uvloop
Add support for loop.sock_sendto
Nessuno ha ancora preso questa issue.
- Lingua principale
- Cython
- Stelle
- 11.9k
- Fork
- 616
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
- uvloop version: 0.17.0 - 0.20.0
- Python version: 3.11.4 - 3.12.5
- Platform: Linux
- Can you reproduce the bug with
PYTHONASYNCIODEBUGin env?: Not a bug - Does uvloop behave differently from vanilla asyncio? How?: Yes, not implemented feature
The uvloop not implement method sock_sendto.
coroutine loop.sock_sendto(sock, data, address)
Send a datagram from sock to address. Asynchronous version of socket.sendto()Return the number of bytes sent.
sock must be a non-blocking socket.
New in version 3.11.
The simple test case that reproduces the problem:
#!/usr/bin/env python3
import socket
import asyncio
import uvloop
uvloop.install()
async def run():
addr = ("127.0.0.1", 1111)
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.setblocking(False)
loop = asyncio.get_running_loop()
await loop.sock_sendto(s, b'test', addr)
asyncio.run(run())
uvloop == 0.20.0 response:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.12/asyncio/runners.py", line 194, in run
return runner.run(main)
^^^^^^^^^^^^^^^^
File "/usr/lib/python3.12/asyncio/runners.py", line 118, in run
return self._loop.run_until_complete(task)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "uvloop/loop.pyx", line 1517, in uvloop.loop.Loop.run_until_complete
File "<stdin>", line 6, in run
File "uvloop/loop.pyx", line 2629, in sock_sendto
NotImplementedError
Guida per i contributori
Nessuna guida per i contributori indicizzata per questo repository
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia dal punto di ingresso sock_sendto in uvloop/loop.pyx, identificato dal traceback, e confronta il comportamento previsto con asyncio.loop.sock_sendto. Usa l’esempio UDP non bloccante fornito per verificare l’implementazione. Il lavoro è completato quando la chiamata invia il datagramma e restituisce il numero di byte inviati invece di sollevare NotImplementedError.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- python
- Ambito
- networking
- Tipo di issue
- Funzionalità
- Difficoltà
- 3/5
- Tempo stimato
- 1-2 giorni
- Stato di attività
- Tranquilla
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 68/100