[PyAthens] Thread-safe global

Antonis Christofides anthony at itia.ntua.gr
Tue Feb 1 10:14:54 CET 2011


On 2011-01-30 22:06, Orestis Markou wrote:
>  Γιατί δεν ορίζεις συναρτήσεις στον manager που να του περνάς
>  συγκεκριμένα το request.user;
>
>  ή εναλλακτικά, όρισε στο model μια συνάρτηση που θα επιστρέφει έναν
>  manager μόνο για αυτόν τον χρήστη

Το πρόβλημα σε αμφότερες αυτές τις λύσεις είναι ότι ο developer που
γράφει κώδικα ψηλού επιπέδου πρέπει να θυμάται κάθε φορά να
χρησιμοποιήσει τις εναλλακτικές συναρτήσεις. Ένας έμπειρος django
developer πολύ συχνά θα το ξεχάσει αυτό, αφού το χέρι του μόνο του θα
πάει να γράψει MyModel.objects.filter(...) αντί του
MyModel.get_objects(request).filter(...) ή ό,τι άλλο. Γι' αυτό θέλω να
αντιμετωπίσω το πρόβλημα σε όσο χαμηλό επίπεδο γίνεται, κρύβοντας τις
λεπτομέρειες από ψηλότερα. Ένα workaround είναι βέβαια να αλλάξω το
objects ώστε να σηκώνει exception ότι δεν είναι διαθέσιμο. Όμως
γενικότερα έχει παραγίνει το κακό στον κώδικά μου να περνάω συνέχεια
το request από το ένα αντικείμενο στο άλλο (επειδή πρέπει τελικά πάντα
να είναι διαθέσιμο, γιατί κάπου στο βάθος τελικά θα χρειαστεί), και
νομίζω πως με μια μεταβλητή thread local θα είναι πιο καθαρό.



More information about the PyAthens mailing list