Hacktoberfest 2026 : les issues que les mainteneurs ont marquées pour octobre, ouvertes et accessibles aux débutants. Parcourir les issues Hacktoberfest

TLS/SSL asyncio/uvloop leaks memory

Ouverte
#565 3 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
4/5
Temps estimé
3-5 jours
Accessibilité débutants
25/100
Type d'issue
Bug
Clarté
À clarifier
Activité
À l'abandon
Stack technique
python
Domaine
networking

Piste de recherche

Commencez par le reproducteur minimal asyncio.Protocol utilisant uvloop.new_event_loop, loop.create_server et le contexte TLS, puis exécutez sous Linux la commande fournie ab -n15000 -c15000 -r avec les versions de Python signalées. Comparez le comportement de la mémoire avec et sans TLS, ainsi qu'avec et sans uvloop ; le travail est terminé lorsque la fuite est isolée et que la mémoire n'augmente plus excessivement sous la charge reproduite.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Description

python3.9 or uvloop seems to leak smaller, but python3.11 (and others?) leaks A LOT OF memory under load
test command: ab -n15000 -c15000 -r https://127.0.0.1/
(apt install apache2-utils)

import asyncio, ssl, uvloop

class HTTP(asyncio.Protocol):
    
    def __init__(self):
        self.transport = None
        
    def connection_made(self, transport) -> None:
        self.transport = transport

    def data_received(self, data) -> None:
        self.transport.write(
            b'HTTP/1.1 200 OK\r\nContent-Length: 0\r\nConnection: keep-alive\r\n\r\n'
        )
        self.transport.close()

    def connection_lost(self, _=0) -> bool | None:
        self.transport.close()

def make_tls_context():
    ctx = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
    ctx.load_cert_chain('cert.crt', 'cert.key')
    return ctx

tls_context = make_tls_context()
loop = uvloop.new_event_loop()
loop.set_debug(True)

async def start_server(loop):
    return await loop.create_server(
        HTTP, '127.0.0.1', 443, backlog=65535,
        ssl=tls_context)

loop.run_until_complete(start_server(loop))
loop.run_forever()
loop.close()

CPython versions tested on:
3.9, 3.11

Operating systems tested on:
Linux

Langage dominant
Cython
Étoiles
11.9k
Forks
615
Métriques de merge des PR
Aucune PR mergée en 30 j

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Autres issues de MagicStack/uvloop

Toutes les issues de MagicStack/uvloop

Issues similaires

Plus d'issues Networking

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.