elastic / elastic/apm-agent-python

Transaction: Context Manager & Decorator

Ouverte
#959 3 commentaires 1 réaction 0 personnes assignées Voir sur GitHub
agent-python
Langage dominant
Python
Étoiles
431
Forks
239
Merge moyen
5 j 10 h
PR mergées (30 j)
7

Description

**Is your feature request related to a problem? Please describe.**
No, it is not.

**Describe the solution you'd like**
Just for increasing the convenience of using Transactions, it would be nice to have an option for using them as a context manager and/or decorator, instead of calling `start_transaction` and `end_transaction` every time. It would be something like this:

```
with transaction('my_transaction_type'):
calling_my_transaction()
```
as a decorator it would look like this
```
@elasticapm.transaction('my_transaction_type', 'my_transaction_name')
def this_is_my_view_method():
pass
```

**Describe alternatives you've considered**
The alternative is use what is already provided (`start_transaction` and `end_transaction`)

**Additional context**
Just to illustrate, the context manager implementation would be similar to the following code
```
def transaction(self, transaction_type, transaction_name=None, trace_parent=None, start=None):
transaction = self.begin_transaction(
transaction_type,
transaction_name=transaction_name,
trace_parent=trace_parent,
start=start
)
yield
self.tracer.end_transaction(transaction.name)
```

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Commencez par lire les points d’entrée existants start_transaction et end_transaction, puis comparez-les aux APIs begin_transaction et elasticapm.transaction proposées dans l’issue. Définissez le comportement du gestionnaire de contexte et du décorateur, notamment le nommage de la transaction et le nettoyage, puis vérifiez que les deux exemples d’utilisation fonctionnent sans appels manuels à la transaction.

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

Évaluation

Stack technique
python
Domaine
observability-sre
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

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