My wprowadzamy naszą pierwszą aplikację django pod mod_wsgi jakCzy django + mod_wsgi wymaga dyscypliny programowania z wątkami?
`WSGIDaemonProcess our-appname processes=6 threads=15'`
a my o dyskusji na temat tego, czy naszym kodzie Python i bibliotek Redis i PostgreSQL to używa musi być bezpieczny wątku, czy nie.
Z tego co mogę powiedzieć po przeczytaniu dokumentacji mod_wsgi, mimo że pracownik apache przetwarza żądania z wieloma apache wątków, nasz python kod jest dla wszystkich zamiarów i celów jednowątkowym. Nie widzę ostrzeżeń na dokumentach mod_wsgi z napisem "Uwaga! Musisz się teraz martwić o globalne dane i bezpieczeństwo wątków!" ale nie ma również wyraźnego "Nie martw się o nici, których nie ma".
Nic nie robimy jawnie z wątkami w naszym kodzie Pythona, nie ma o nich żadnej wzmianki we wszystkim, co napisaliśmy.
Ale niektórzy ludzie są zdania, że skoro używamy wersji threads=15
, jesteśmy teraz w świecie wielowątkowym.
Czy ktoś może wyjaśnić, co się tutaj dzieje? Czy nasz kod Pythona podlega teraz wielu wątkom wykonywania przez te same dane, na których wcześniej nie było, czy też nie?
Przepraszam, ale stwierdzenie, że twoja wypowiedź jest bardzo mylące. Interpreter Pythona sam w sobie jest bezpieczny dla wątków, gdyby tak nie było, rozbijałby się w każdym miejscu. Wewnętrzny stan interpretera Pythona i zarządzanie licznikami referencyjnymi jest mediowany przez GIL, jak mówisz, i zapewnia bezpieczne korzystanie z interpretera Pythona z wieloma wątkami. Tak zły sposób wyjaśnienia tego. Również gunicorn z geventem nie ma wielu wątków. Podczas korzystania z geventu są one technicznie rzecz biorąc nie wątkami, ale sprawiają, że wyglądają jak wątki. –
Kwestia kodu aplikacji na poziomie wątku jest inna, ale nie należy mylić tego z tym, czy interpreter Pythona jest bezpieczny dla wątków. –
Przy pierwszym zliczaniu, przypuszczam, że to prawda, chociaż nie jestem pewien, czy jest mniej dokładne opisywanie interpretera python jako nie wątku bezpiecznego dla operacji pamięciowych na obiektach Pythona w tym samym czasie, niż wyjaśnienie, że jest bezpieczny dla wątków. ponieważ GIL uniemożliwia wykonywanie powyższych czynności. Po drugim liczeniu zgadzam się; gevent używa "zielonych nici", które technicznie nie są nitkami - powinienem to wyjaśnić. –