elastic / elastic/apm-agent-python
Transaction: Context Manager & Decorator
- 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