Tulip / asyncIO: dlaczego nie wszystkie połączenia są asynchroniczne i określają, kiedy rzeczy powinny być synchroniczne?
Poszedłem do spotkania SF Pythona, kiedy Guidorozmawiałem o Tulip, przyszłej bibliotece asyncIO do asynchronicznych operacji w Pythonie.
Odejście polega na tym, że jeśli chcesz, aby coś było uruchamiane asynchronicznie, możesz użyć"yield from" + expression
i kilka dekoratorów, aby określić, że połączenie do tego, co następuje poyield from
powinien być wykonywany asynchronicznie. Dobrą rzeczą jest to, że można normalnie czytać instrukcje w tej funkcji (tak jakby była synchroniczna) i będzie zachowywać się tak, jakby była synchroniczna w odniesieniu do wykonania tej funkcji (wartości zwracane i propagacja i obsługa błędów / wyjątków). ).
Moje pytanie brzmi: dlaczego nie mieć odwrotnego zachowania, mianowicie mieć wszystkie wywołania funkcji domyślnie asynchroniczne (i bezyield from
) i mają inną wyraźną składnię, jeśli chcesz wykonać coś synchronicznie?
(poza potrzebą innej specyfikacji słów kluczowych / składni)