Kasırga kullanarak, SQLAlchemy oturumlarımın düzgün bir şekilde kapatılıp temizlenmesini ve böylece nesnelerin bir istekten diğerine paylaşılmamasını sağlamak için biraz ara yazılım büyüsü oluşturmak istiyorum. İşin sırrı, bazı kasırga işleyicilerim eşzamansız olduğundan, her istek için yalnızca bir oturum paylaşamıyorum.SQLAlchemy + Tornado: SQLAlchemy's ScopedSession için scopefunc nasıl oluşturulur?
Her istek için nasıl yeni bir oturum oluşturulacağını bilen bir Kapsamlı Oturum oluşturmaya çalışıyorum. Tek yapmam gereken, şu anda yürütme isteğini bir tür benzersiz anahtar haline dönüştürebilen kodum için bir scopefunc tanımlamaktır, ancak şu andaki isteği herhangi bir noktada 'a nasıl aldığımı anlayamıyorum (işlevimin her ikisine de erişemediği geçerli RequestHandler kapsamı dışında).
Bu işi yapmak için yapabileceğim bir şey var mı?
Hiç bir kasırga tanımıyorum ama Session'ı isteğin kendisi ile ilişkilendirmek isteyebilirsiniz (yani, uygun değilse scopedsession kullanmayın). o zaman sadece request.session deyin. Kurulum/açma için başlangıçta/sonunda kancalara sahip olması gerekir. – zzzeek
@zzzeek Eğer bunu cevap olarak gönderirseniz, doğru olarak işaretleyeceğim! Bunu düşündüğümde, hak ettiğimi daha çok anladım - ihtiyacım olan şeyi elde etmenin en hızlı ve en kolay yolu bu. Teşekkürler! –
Aynı düşünmekteyim, tüm async işleyicileri arasında tutarsızlık yaratacak bir oturumun paylaşılması tutarsızlık yaratacaktır, değil mi? Bir işleyicide, işleyicinin sonunda scopped_session.remove() öğesini çağırabilirim ancak diğer işleyici (zaman uyumsuz olarak çalışıyor) yine de kullanıyor olabilir! – giga