From 63ffd735d1c88820807b585eacb05de04f142429 Mon Sep 17 00:00:00 2001
From: bilal alpaslan <47563997+BilalAlpaslan@users.noreply.github.com>
Date: Mon, 22 Jan 2024 22:57:04 +0300
Subject: [PATCH] =?utf8?q?=F0=9F=8C=90=20Add=20Turkish=20translation=20`do?=
=?utf8?q?cs/tr/docs/async.md`=20(#5191)?=
MIME-Version: 1.0
Content-Type: text/plain; charset=utf8
Content-Transfer-Encoding: 8bit
---
docs/tr/docs/async.md | 401 ++++++++++++++++++++++++++++++++++++++++++
1 file changed, 401 insertions(+)
create mode 100644 docs/tr/docs/async.md
diff --git a/docs/tr/docs/async.md b/docs/tr/docs/async.md
new file mode 100644
index 0000000000..2be5943435
--- /dev/null
+++ b/docs/tr/docs/async.md
@@ -0,0 +1,401 @@
+# Concurrency ve async / await
+
+*path operasyon fonksiyonu* için `async def `sözdizimi, asenkron kod, eÅzamanlılık ve paralellik hakkında bazı ayrıntılar.
+
+## Aceleniz mi var?
+
+TL;DR:
+
+EÄer `await` ile çaÄrılması gerektiÄini belirten üçüncü taraf kütüphaneleri kullanıyorsanız, örneÄin:
+
+```Python
+results = await some_library()
+```
+
+O zaman *path operasyon fonksiyonunu* `async def` ile tanımlayın örneÄin:
+
+```Python hl_lines="2"
+@app.get('/')
+async def read_results():
+ results = await some_library()
+ return results
+```
+
+!!! not
+ Sadece `async def` ile tanımlanan fonksiyonlar içinde `await` kullanabilirsiniz.
+
+---
+
+EÄer bir veritabanı, bir API, dosya sistemi vb. ile iletiÅim kuran bir üçüncü taraf bir kütüphane kullanıyorsanız ve `await` kullanımını desteklemiyorsa, (bu Åu anda çoÄu veritabanı kütüphanesi için geçerli bir durumdur), o zaman *path operasyon fonksiyonunuzu* `def` kullanarak normal bir Åekilde tanımlayın, örneÄin:
+
+```Python hl_lines="2"
+@app.get('/')
+def results():
+ results = some_library()
+ return results
+```
+
+---
+
+EÄer uygulamanız (bir Åekilde) baÅka bir Åeyle iletiÅim kurmak ve onun cevap vermesini beklemek zorunda deÄilse, `async def` kullanın.
+
+---
+
+Sadece bilmiyorsanız, normal `def` kullanın.
+
+---
+
+**Not**: *path operasyon fonksiyonlarınızda* `def` ve `async def`'i ihtiyaç duyduÄunuz gibi karıÅtırabilir ve her birini sizin için en iyi seçeneÄi kullanarak tanımlayabilirsiniz. FastAPI onlarla doÄru olanı yapacaktır.
+
+Her neyse, yukarıdaki durumlardan herhangi birinde, FastAPI yine de asenkron olarak çalıÅacak ve son derece hızlı olacaktır.
+
+Ancak yukarıdaki adımları takip ederek, bazı performans optimizasyonları yapılabilecektir.
+
+## Teknik Detaylar
+
+Python'un modern versiyonlarında **`async` ve `await`** sözdizimi ile **"coroutines"** kullanan **"asenkron kod"** desteÄine sahiptir.
+
+Bu ifadeyi aÅaÄıdaki bölümlerde daha da ayrıntılı açıklayalım:
+
+* **Asenkron kod**
+* **`async` ve `await`**
+* **Coroutines**
+
+## Asenkron kod
+
+Asenkron kod programlama dilinin ð¬ bilgisayara / programa ð¤ kodun bir noktasında, *baÅka bir kodun* bir yerde bitmesini ð¤ beklemesi gerektiÄini söylemenin bir yoludur. Bu *baÅka koda* "slow-file" denir ð.
+
+Böylece, bu süreçte bilgisayar "slow-file" ð tamamlanırken gidip baÅka iÅler yapabilir.
+
+Sonra bilgisayar / program ð¤ her fırsatı olduÄunda o noktada yaptıÄı tüm iÅleri ð¤ bitirene kadar geri dönücek. Ve ð¤ yapması gerekeni yaparak, beklediÄi görevlerden herhangi birinin bitip bitmediÄini görecek.
+
+Ardından, ð¤ bitirmek için ilk görevi alır ("slow-file" ð) ve onunla ne yapması gerekiyorsa onu devam ettirir.
+
+Bu "baÅka bir Åey için bekle" normalde, aÅaÄıdakileri beklemek gibi (iÅlemcinin ve RAM belleÄinin hızına kıyasla) nispeten "yavaÅ" olan I/O iÅlemlerine atıfta bulunur:
+
+* istemci tarafından aÄ Ã¼zerinden veri göndermek
+* aÄ Ã¼zerinden istemciye gönderilen veriler
+* sistem tarafından okunacak ve programınıza verilecek bir dosya içeriÄi
+* programınızın diske yazılmak üzere sisteme verdiÄi dosya içerikleri
+* uzak bir API iÅlemi
+* bir veritabanı bitirme iÅlemi
+* sonuçları döndürmek için bir veritabanı sorgusu
+* vb.
+
+Yürütme süresi çoÄunlukla I/O iÅlemleri beklenerek tüketildiÄinden bunlara "I/O baÄlantılı" iÅlemler denir.
+
+Buna "asenkron" denir, çünkü bilgisayar/program yavaÅ görevle "senkronize" olmak zorunda deÄildir, görevin tam olarak biteceÄi anı bekler, hiçbir Åey yapmadan, görev sonucunu alabilmek ve çalıÅmaya devam edebilmek için .
+
+Bunun yerine, "asenkron" bir sistem olarak, bir kez bittiÄinde, bilgisayarın / programın yapması gerekeni bitirmesi için biraz (birkaç mikrosaniye) sırada bekleyebilir ve ardından sonuçları almak için geri gelebilir ve onlarla çalıÅmaya devam edebilir.
+
+"Senkron" ("asenkron"un aksine) için genellikle "sıralı" terimini de kullanırlar, çünkü bilgisayar/program, bu adımlar beklemeyi içerse bile, farklı bir göreve geçmeden önce tüm adımları sırayla izler.
+
+
+### EÅzamanlılık (Concurrency) ve Burgerler
+
+
+Yukarıda açıklanan bu **asenkron** kod fikrine bazen **"eÅzamanlılık"** da denir. **"Paralellikten"** farklıdır.
+
+**EÅzamanlılık** ve **paralellik**, "aynı anda az ya da çok olan farklı iÅler" ile ilgilidir.
+
+Ancak *eÅzamanlılık* ve *paralellik* arasındaki ayrıntılar oldukça farklıdır.
+
+
+Farkı görmek için burgerlerle ilgili aÅaÄıdaki hikayeyi hayal edin:
+
+### EÅzamanlı Burgerler
+
+
+
+AÅkınla beraber ð dıÅarı hamburger yemeye çıktınız ð, kasiyer ð öndeki insanlardan sipariÅ alırken siz sıraya girdiniz.
+
+Sıra sizde ve sen aÅkın ð ve kendin için 2 çılgın hamburger ð söylüyorsun.
+
+Ãdemeyi yaptın ð¸.
+
+Kasiyer ð mutfakdaki aÅçıya ð¨âð³ hamburgerleri ð hazırlaması gerektiÄini söyler ve aÅçı bunu bilir (o an önceki müÅterilerin sipariÅlerini hazırlıyor olsa bile).
+
+Kasiyer ð size bir sıra numarası verir.
+
+Beklerken askınla ð bir masaya oturur ve uzun bir süre konuÅursunuz(Burgerleriniz çok çılgın olduÄundan ve hazırlanması biraz zaman alıyor â¨ðâ¨).
+
+Hamburgeri beklerkenki zamanı ð, aÅkının ne kadar zeki ve tatlı olduÄuna hayran kalarak harcayabilirsin â¨ðâ¨.
+
+AÅkınla ð konuÅurken arada sıranın size gelip gelmediÄini kontrol ediyorsun.
+
+Nihayet sıra size geldi. Tezgaha gidip hamburgerleri ðkapıp masaya geri dönüyorsun.
+
+AÅkınla hamburgerlerinizi yiyor ð ve iyi vakit geçiriyorsunuz â¨.
+
+---
+
+Bu hikayedeki bilgisayar / program ð¤ olduÄunuzu hayal edin.
+
+Sırada beklerken boÅtasın ð´, sıranı beklerken herhangi bir "üretim" yapmıyorsun. Ama bu sıra hızlı çünkü kasiyer sadece sipariÅleri alıyor (onları hazırlamıyor), burada bir sıknıtı yok.
+
+Sonra sıra size geldiÄinde gerçekten "üretken" iÅler yapabilirsiniz ð¤, menüyü oku, ne istediÄine larar ver, aÅkının seçimini al ð, öde ð¸, doÄru kartı çıkart, ödemeyi kontrol et, faturayı kontrol et, sipariÅin doÄru olup olmadıÄını kontrol et, vb.
+
+Ama hamburgerler ð hazır olmamasına raÄmen Kasiyer ð ile iÅiniz "duraklıyor" â¸, çünkü hamburgerlerin hazır olmasını bekliyoruz ð.
+
+Ama tezgahtan uzaklaÅıp sıranız gelene kadarmasanıza dönebilir ð ve dikkatinizi aÅkınıza ð verebilirsiniz vr bunun üzerine "çalıÅabilirsiniz" ⯠ð¤. Artık "üretken" birÅey yapıyorsunuz ð¤, sevgilinle ð flört eder gibi.
+
+Kasiyer ð "Hamburgerler hazır !" ð dediÄinde ve görüntülenen numara sizin numaranız olduÄunda hemen koÅup hamburgerlerinizi almaya çalıÅmıyorsunuz. Biliyorsunuzki kimse sizin hamburgerlerinizi ð çalmayacak çünkü sıra sizin.
+
+Yani AÅkınızınð hikayeyi bitirmesini bekliyorsunuz (çalıÅmayı bitir ⯠/ görev iÅleniyor.. ð¤), nazikçe gülümseyin ve hamburger yemeye gittiÄinizi söyleyin â¸.
+
+Ardından tezgaha ð, Åimdi biten ilk göreve ⯠gidin, Hamburgerleri ð alın, teÅekkür edin ve masaya götürün. sayacın bu adımı tamamlanır â¹. Bu da yeni bir görev olan "hamburgerleri ye" ð ⯠görevini baÅlatırken "hamburgerleri al" â¹ görevini bitirir.
+
+### Parallel Hamburgerler
+
+Åimdi bunların "EÅzamanlı Hamburger" deÄil, "Paralel Hamburger" olduÄunu düÅünelim.
+
+Hamburger ð almak için ð aÅkınla Paralel fast food'a gidiyorsun.
+
+Birden fazla kasiyer varken (varsayalım 8) sıraya girdinizð©âð³ð¨âð³ð©âð³ð¨âð³ð©âð³ð¨âð³ð©âð³ð¨âð³ ve sıranız gelene kadar bekliyorsunuz.
+
+Sizden önceki herkez ayrılmadan önce hamburgerlerinin ð hazır olmasını bekliyor ð. Ãünkü kasiyerlerin her biri bir hamburger hazırlanmadan önce bir sonraki sipariÅe geçmiiyor.
+
+Sonunda senin sıran, aÅkın ð ve kendin için 2 hamburger ð sipariÅi verdiniz.
+
+Ãdemeyi yaptınız ð¸.
+
+Kasiyer mutfaÄa gider ð¨âð³.
+
+Sırada bekliyorsunuz ð, kimse sizin burgerinizi ð almaya çalıÅmıyor çünkü sıra sizin.
+
+Sen ve aÅkın ð sıranızı korumak ve hamburgerleri almakla o kadar meÅgulsünüz ki birbirinize vakit ð ayıramıyorsunuz ð.
+
+İÅte bu "senkron" çalıÅmadır. Kasiyer/aÅçı ð¨âð³ile senkron hareket ediyorsunuz. Bu yüzden beklemek ð ve kasiyer/aÅçı burgeri ðbitirip size getirdiÄinde orda olmak zorundasınız yoksa baÅka biri alabilir.
+
+Sonra kasiyeri/aÅçı ð¨âð³ nihayet hamburgerlerinizle ð, uzun bir süre sonra ð tezgaha geri geliyor.
+
+Burgerlerinizi ð al ve aÅkınla masanıza doÄru ilerle ð.
+
+Sadece burgerini yiyorsun ð ve bitti â¹.
+
+Bekleyerek çok fazla zaman geçtiÄinden ð konuÅmaya çok fazla vakit kalmadı ð.
+
+---
+
+Paralel burger senaryosunda ise, siz iki iÅlemcili birer robotsunuz ð¤ (sen ve sevgilin ð), Beklıyorsunuz ð hem konuÅarak güzel vakit geçirirken ⯠hem de sıranızı bekliyorsunuz ð.
+
+MaÄazada ise 8 iÅlemci bulunuyor (Kasiyer/aÅçı) ð©âð³ð¨âð³ð©âð³ð¨âð³ð©âð³ð¨âð³ð©âð³ð¨âð³. EÅzamanlı burgerde yalnızca 2 kiÅi olabiliyordu (bir kasiyer ve bir aÅçı) ð ð¨âð³.
+
+Ama yine de bu en iyisi deÄil ð.
+
+---
+
+Bu hikaye burgerler ð için paralel.
+
+Bir gerçek hayat örneÄi verelim. Bir banka hayal edin.
+
+Bankaların çoÄunda birkaç kasiyer ð¨âð¼ð¨âð¼ð¨âð¼ð¨âð¼ ve uzun bir sıra var ðððððððð.
+
+Tüm iÅi sırayla bir müÅteri ile yapan tüm kasiyerler ð¨âð¼â¯.
+
+Ve uzun süre kuyrukta beklemek ð zorundasın yoksa sıranı kaybedersin.
+
+Muhtemelen ayak iÅlerı yaparken sevgilini ð bankaya ð¦ getirmezsin.
+
+### Burger Sonucu
+
+Bu "aÅkınla fast food burgerleri" senaryosunda, çok fazla bekleme olduÄu için ð, eÅzamanlı bir sisteme sahip olmak çok daha mantıklı â¸ðâ¯.
+
+Web uygulamalarının çoÄu için durum böyledir.
+
+Pek çok kullanıcı var, ama sunucunuz pek de iyi olmayan bir baÄlantı ile istek atmalarını bekliyor.
+
+Ve sonra yanıtların geri gelmesi için tekrar ð bekliyor
+
+Bu "bekleme" ð mikrosaniye cinsinden ölçülür, yine de, hepsini toplarsak çok fazla bekleme var.
+
+Bu nedenle, web API'leri için asenkron â¸ð⯠kod kullanmak çok daha mantıklı.
+
+Mevcut popüler Python frameworklerinin çoÄu (Flask ve Django gibi), Python'daki yeni asenkron özellikler mevcut olmadan önce yazıldı. Bu nedenle, daÄıtılma biçimleri paralel yürütmeyi ve yenisi kadar güçlü olmayan eski bir eÅzamansız yürütme biçimini destekler.
+
+Asenkron web (ASGI) özelliÄi, WebSockets için destek eklemek için Django'ya eklenmiÅ olsa da.
+
+Asenkron çalıÅabilme NodeJS in popüler olmasının sebebi (paralel olamasa bile) ve Go dilini güçlü yapan özelliktir.
+
+Ve bu **FastAPI** ile elde ettiÄiniz performans düzeyiyle aynıdır.
+
+Aynı anda paralellik ve asenkronluÄa sahip olabildiÄiniz için, test edilen NodeJS çerçevelerinin çoÄundan daha yüksek performans elde edersiniz ve C'ye daha yakın derlenmiÅ bir dil olan Go ile eÅit bir performans elde edersiniz (bütün teÅekkürler Starlette'e ).
+
+### EÅzamanlılık paralellikten daha mı iyi?
+
+Hayır! Hikayenin ahlakı bu deÄil.
+
+EÅzamanlılık paralellikten farklıdır. Ve çok fazla bekleme içeren **belirli** senaryolarda daha iyidir. Bu nedenle, genellikle web uygulamaları için paralellikten çok daha iyidir. Ama her Åey için deÄil.
+
+Yanı, bunu aklınızda oturtmak için aÅaÄıdaki kısa hikayeyi hayal edin:
+
+> Büyük, kirli bir evi temizlemelisin.
+
+*Evet, tüm hikaye bu*.
+
+---
+
+Beklemek yok ð. Hiçbir yerde. Sadece evin birden fazla yerinde yapılacak fazlasıyla iÅ var.
+
+You could have turns as in the burgers example, first the living room, then the kitchen, but as you are not waiting ð for anything, just cleaning and cleaning, the turns wouldn't affect anything.
+Hamburger örneÄindeki gibi dönüÅleriniz olabilir, önce oturma odası, sonra mutfak, ama hiçbir Åey için ð beklemediÄinizden, sadece temizlik, temizlik ve temizlik, dönüÅler hiçbir Åeyi etkilemez.
+
+Sıralı veya sırasız (eÅzamanlılık) bitirmek aynı zaman alır ve aynı miktarda iÅi yaparsınız.
+
+Ama bu durumda, 8 eski kasiyer/aÅçı - yeni temizlikçiyi getirebilseydiniz ð©âð³ð¨âð³ð©âð³ð¨âð³ð©âð³ð¨âð³ð©âð³ð¨âð³ ve her birini (artı siz) evin bir bölgesini temizlemek için görevlendirseydiniz, ekstra yardımla tüm iÅleri **paralel** olarak yapabilir ve çok daha erken bitirebilirdiniz.
+
+Bu senaryoda, temizlikçilerin her biri (siz dahil) birer iÅlemci olacak ve üzerine düÅeni yapacaktır.
+
+Yürütme süresinin çoÄu (beklemek yerine) iÅ yapıldıÄından ve bilgisayardaki iÅ bir CPU tarafından yapıldıÄından, bu sorunlara "CPU bound" diyorlar".
+
+---
+
+CPU'ya baÄlı iÅlemlerin yaygın örnekleri, karmaÅık matematik iÅlemleri gerektiren iÅlerdir.
+
+ÃrneÄin:
+
+* **Ses** veya **görüntü iÅleme**.
+* **Bilgisayar görüsü**: bir görüntü milyonlarca pikselden oluÅur, her pikselin 3 deÄeri / rengi vardır, bu pikseller üzerinde aynı anda bir Åeyler hesaplamayı gerektiren iÅleme.
+* **Makine ÃÄrenimi**: Ãok sayıda "matris" ve "vektör" çarpımı gerektirir. Sayıları olan ve hepsini aynı anda çarpan büyük bir elektronik tablo düÅünün.
+* **Derin ÃÄrenme**: Bu, Makine ÃÄreniminin bir alt alanıdır, dolayısıyla aynısı geçerlidir. Sadece çarpılacak tek bir sayı tablosu deÄil, büyük bir sayı kümesi vardır ve çoÄu durumda bu modelleri oluÅturmak ve/veya kullanmak için özel iÅlemciler kullanırsınız.
+
+### EÅzamanlılık + Paralellik: Web + Makine ÃÄrenimi
+
+**FastAPI** ile web geliÅtirme için çok yaygın olan eÅzamanlılıktan yararlanabilirsiniz (NodeJS'in aynı çekiciliÄi).
+
+Ancak, Makine ÃÄrenimi sistemlerindekile gibi **CPU'ya baÄlı** iÅ yükleri için paralellik ve çoklu iÅlemenin (birden çok iÅlemin paralel olarak çalıÅması) avantajlarından da yararlanabilirsiniz.
+
+Buna ek olarak Python'un **Veri Bilimi**, Makine ÃÄrenimi ve özellikle Derin ÃÄrenme için ana dil olduÄu gerçeÄi, FastAPI'yi Veri Bilimi / Makine ÃÄrenimi web API'leri ve uygulamaları için çok iyi bir seçenek haline getirir.
+
+Production'da nasıl oldugunu görmek için Åu bölüme bakın [Deployment](deployment/index.md){.internal-link target=_blank}.
+
+## `async` ve `await`
+
+Python'un modern sürümleri, asenkron kodu tanımlamanın çok sezgisel bir yoluna sahiptir. Bu, normal "sequentıal" (sıralı) kod gibi görünmesini ve doÄru anlarda sizin için "awaıt" ile bekleme yapmasını saÄlar.
+
+Sonuçları vermeden önce beklemeyi gerektirecek ve yeni Python özelliklerini destekleyen bir iÅlem olduÄunda aÅaÄıdaki gibi kodlayabilirsiniz:
+
+```Python
+burgers = await get_burgers(2)
+```
+
+Buradaki `await` anahtari Python'a, sonuçları `burgers` degiskenine atamadan önce `get_burgers(2)` kodunun iÅini bitirmesini ð beklemesi gerektiÄini söyler. Bununla Python, bu ara zamanda baÅka bir Åey ð ⯠yapabileceÄini bilecektir (baÅka bir istek almak gibi).
+
+ `await`kodunun çalıÅması için, eÅzamansızlıÄı destekleyen bir fonksiyonun içinde olması gerekir. Bunu da yapmak için fonksiyonu `async def` ile tanımlamamız yeterlidir:
+
+```Python hl_lines="1"
+async def get_burgers(number: int):
+ # burgerleri oluÅturmak için asenkron birkaç iÅ
+ return burgers
+```
+
+...`def` yerine:
+
+```Python hl_lines="2"
+# bu kod asenkron deÄil
+def get_sequential_burgers(number: int):
+ # burgerleri oluÅturmak için senkron bırkaç iÅ
+ return burgers
+```
+
+`async def` ile Python, bu fonksıyonun içinde, `await` ifadelerinin farkında olması gerektiÄini ve çalıÅma zamanı gelmeden önce bu iÅlevin yürütülmesini "duraklatabileceÄini" ve baÅka bir Åey yapabileceÄini ð bilir.
+
+`async def` fonksiyonunu çaÄırmak istediÄinizde, onu "awaıt" ıle kullanmanız gerekir. Yani, bu iÅe yaramaz:
+
+```Python
+# Bu iÅe yaramaz, çünkü get_burgers, Åu Åekilde tanımlandı: async def
+burgers = get_burgers(2)
+```
+
+---
+
+Bu nedenle, size onu `await` ile çaÄırabileceÄinizi söyleyen bir kitaplık kullanıyorsanız, onu `async def` ile tanımlanan *path fonksiyonu* içerisinde kullanmanız gerekir, örneÄin:
+
+```Python hl_lines="2-3"
+@app.get('/burgers')
+async def read_burgers():
+ burgers = await get_burgers(2)
+ return burgers
+```
+
+### Daha fazla teknik detay
+
+`await` in yalnızca `async def` ile tanımlanan fonksıyonların içinde kullanılabileceÄini fark etmiÅsinizdir.
+
+Ama aynı zamanda, `async def` ile tanımlanan fonksiyonların "await" ile beklenmesi gerekir. Bu nedenle, "`async def` içeren fonksiyonlar yalnızca "`async def` ile tanımlanan fonksiyonların içinde çaÄrılabilir.
+
+
+Yani yumurta mı tavukdan, tavuk mu yumurtadan gibi ilk `async` fonksiyonu nasıl çaÄırılır?
+
+**FastAPI** ile çalıÅıyorsanız bunun için endiÅelenmenize gerek yok, çünkü bu "ilk" fonksiyon sizin *path fonksiyonunuz* olacak ve FastAPI doÄru olanı nasıl yapacaÄını bilecek.
+
+Ancak FastAPI olmadan `async` / `await` kullanmak istiyorsanız, resmi Python belgelerini kontrol edin.
+
+### Asenkron kodun diÄer biçimleri
+
+Bu `async` ve `await` kullanimi oldukça yenidir.
+
+Ancak asenkron kodla çalıÅmayı çok daha kolay hale getirir.
+
+Aynı sözdizimi (hemen hemen aynı) son zamanlarda JavaScript'in modern sürümlerine de dahil edildi (Tarayıcı ve NodeJS'de).
+
+Ancak bundan önce, asenkron kodu iÅlemek oldukça karmaÅık ve zordu.
+
+Python'un önceki sürümlerinde, threadlerı veya Gevent kullanıyor olabilirdin. Ancak kodu anlamak, hata ayıklamak ve düÅünmek çok daha karmaÅık olurdu.
+
+NodeJS / Browser JavaScript'in önceki sürümlerinde, "callback" kullanırdınız. Bu da callbacks cehennemine yol açar.
+
+## Coroutine'ler
+
+**Coroutine**, bir `async def` fonksiyonu tarafından döndürülen deÄer için çok süslü bir terimdir. Python bunun bir fonksiyon gibi bir noktada baÅlayıp biteceÄini bilir, ancak içinde bir `await` olduÄunda dahili olarak da duraklatılabilir â¸.
+
+Ancak, `async` ve `await` ile asenkron kod kullanmanın tüm bu iÅlevselliÄi, çoÄu zaman "Coroutine" kullanmak olarak adlandırılır. Go'nun ana özelliÄi olan "Goroutines" ile karÅılaÅtırılabilir.
+
+## Sonuç
+
+Aynı ifadeyi yukarıdan görelim:
+
+> Python'ın modern sürümleri, **"async" ve "await"** sözdizimi ile birlikte **"coroutines"** adlı bir özelliÄi kullanan **"asenkron kod"** desteÄine sahiptir.
+
+Åimdi daha mantıklı gelmeli. â¨
+
+FastAPI'ye (Starlette aracılıÄıyla) güç veren ve bu kadar etkileyici bir performansa sahip olmasını saÄlayan Åey budur.
+
+## Ãok Teknik Detaylar
+
+!!! warning
+ Muhtemelen burayı atlayabilirsiniz.
+
+ Bunlar, **FastAPI**'nin altta nasıl çalıÅtıÄına dair çok teknik ayrıntılardır.
+
+ Biraz teknik bilginiz varsa (co-routines, threads, blocking, vb)ve FastAPI'nin "async def" ile normal "def" arasındaki farkı nasıl iÅlediÄini merak ediyorsanız, devam edin.
+
+### Path fonksiyonu
+
+"async def" yerine normal "def" ile bir *yol iÅlem iÅlevi* bildirdiÄinizde, doÄrudan çaÄrılmak yerine (sunucuyu bloke edeceÄinden) daha sonra beklenen harici bir iÅ parçacıÄı havuzunda çalıÅtırılır.
+
+Yukarıda açıklanan Åekilde çalıÅmayan baÅka bir asenkron framework'den geliyorsanız ve küçük bir performans kazancı (yaklaÅık 100 nanosaniye) için "def" ile *path fonksiyonu* tanımlamaya alıÅkınsanız, **FastAPI**'de tam tersi olacaÄını unutmayın. Bu durumlarda, *path fonksiyonu* G/à engelleyen durum oluÅturmadıkça "async def" kullanmak daha iyidir.
+
+Yine de, her iki durumda da, **FastAPI**'nin önceki frameworkden [hala daha hızlı](/#performance){.internal-link target=_blank} (veya en azından karÅılaÅtırılabilir) olma olasılıÄı vardır.
+
+### Bagımlılıklar
+
+Aynısı baÄımlılıklar için de geçerlidir. Bir baÄımlılık, "async def" yerine standart bir "def" iÅleviyse, harici iÅ parçacıÄı havuzunda çalıÅtırılır.
+
+### Alt-baÄımlıklar
+
+Birbirini gerektiren (fonksiyonlarin parametreleri olarak) birden fazla baÄımlılık ve alt baÄımlılıklarınız olabilir, bazıları 'async def' ve bazıları normal 'def' ile oluÅturulabilir. Yine de normal 'def' ile oluÅturulanlar, "await" kulanilmadan harici bir iÅ parçacıÄında (iÅ parçacıÄı havuzundan) çaÄrılır.
+
+### DiÄer yardımcı fonksiyonlar
+
+DoÄrudan çaÄırdıÄınız diÄer herhangi bir yardımcı fonksiyonu, normal "def" veya "async def" ile tanimlayabilirsiniz. FastAPI onu çaÄırma Åeklinizi etkilemez.
+
+Bu, FastAPI'nin sizin için çaÄırdıÄı fonksiyonlarin tam tersidir: *path fonksiyonu* ve baÄımlılıklar.
+
+Yardımcı program fonksiyonunuz 'def' ile normal bir iÅlevse, bir iÅ parçacıÄı havuzunda deÄil doÄrudan (kodunuzda yazdıÄınız gibi) çaÄrılır, iÅlev 'async def' ile oluÅturulmuÅsa çaÄırıldıÄı yerde 'await' ile beklemelisiniz.
+
+---
+
+Yeniden, bunlar, onları aramaya geldiÄinizde muhtemelen iÅinize yarayacak çok teknik ayrıntılardır.
+
+Aksi takdirde, yukarıdaki bölümdeki yönergeleri iyi bilmelisiniz: Aceleniz mi var?.
--
2.47.2