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

`serve()` fails on Python 3.14: `asyncio.get_event_loop()` raises instead of creating a loop

Fermée
#224 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Évaluation

Difficulté
3/5
Temps estimé
1-2 jours
Accessibilité débutants
58/100
Type d'issue
Bug
Clarté
Plutôt claire
Activité
Calme
Stack technique
python
Domaine
backend

Piste de recherche

Commencez dans crossplane/function/runtime.py vers la ligne 98 et suivez serve() à travers la configuration du gestionnaire de signaux et l’appel à run_until_complete. Comparez la plage de versions Python déclarée dans pyproject.toml avec la couverture d’une seule version dans .github/workflows/ci.yml, puis reproduisez l’échec avec function-template-python en utilisant python:3.14-slim. C’est terminé lorsque le point d’entrée démarre et traite des requêtes avec Python 3.14 sans casser la suite existante.

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

Description

What happened?

crossplane.function.runtime.serve() calls asyncio.get_event_loop() from a
synchronous context:

https://github.com/crossplane/function-sdk-python/blob/main/crossplane/function/runtime.py#L98

On Python 3.14 that raises instead of creating a loop, so any function built on
the SDK dies at startup:

Traceback (most recent call last):
  File "/app/.venv/bin/my-function", line 10, in <module>
    sys.exit(main())
  File "/app/function/main.py", line 42, in main
    runtime.serve(
    ...
  File "/app/.venv/lib/python3.14/site-packages/crossplane/function/runtime.py", line 98, in serve
    loop = asyncio.get_event_loop()
  File "/usr/local/lib/python3.14/asyncio/events.py", line 718, in get_event_loop
    raise RuntimeError('There is no current event loop in thread %r.'
                       % threading.current_thread().name)
RuntimeError: There is no current event loop in thread 'MainThread'.

get_event_loop() creating a loop when none is running was deprecated in 3.12
and removed in 3.14; the call now only succeeds from inside a running loop.

How can we reproduce it?

Scaffold from function-template-python, set the base image to
python:3.14-slim, build, and run the entrypoint — the process exits
immediately with the traceback above. Nothing else is needed; it fails before
any request is served.

What is the SDK version?

crossplane-function-sdk-python 0.14.0 (current release), and main at the
time of writing still has the same call.

Why this may have gone unnoticed

pyproject.toml declares requires-python = ">=3.11", but CI pins a single
version — PYTHON_VERSION: '3.11' in .github/workflows/ci.yml — so nothing
exercises the upper end of that range. 3.13 still accepts the call (deprecated
only), which is why this surfaces first on 3.14.

Additional context

Found while testing a Python 3.12 → 3.14 bump on a function of ours. Worth
flagging how quiet the failure is: on 3.14 the image builds, every dependency
imports, and the full unit suite passes. Only starting the entrypoint fails, so
the bump looks green everywhere except in a cluster, where it crash-loops.

Happy to test a patch against a real function if that helps — not opening a PR
myself, since serve() also installs signal handlers and calls
run_until_complete on that loop, and how you want it restructured (own loop
via new_event_loop, or moving to asyncio.run) is a design call for you.

Langage dominant
Python
Étoiles
12
Forks
15
Merge moyen
1 j 12 h
PR mergées (30 j)
7

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 crossplane/function-sdk-python

Toutes les issues de crossplane/function-sdk-python

Issues similaires

Plus d'issues Python

Recevez les nouvelles issues par e-mail

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