~/saidqb cat wiki/note/TIL/2026-07.md
commit by saidqb
TIL — Today I Learned (Juli 2026)
Kumpulan catatan singkat hal-hal yang saya pelajari dari kerjaan sehari-hari — kebanyakan seputar Nginx, Laravel, dan Python.
2026-07-30 — Python: blocking call di dalam async def bikin semua request nunggu
Salah satu endpoint FastAPI tiba-tiba jadi lambat banget pas traffic naik — padahal
cuma manggil API lain. Penyebabnya: pakai requests (library sync/blocking) di
dalam route async def, jadi nge-block satu-satunya event loop sampai request itu
selesai — semua request LAIN ikut ketahan juga.
# salah — requests.get() itu blocking, macetin event loop
@app.get("/report")
async def report():
res = requests.get("https://slow-api.com/data")
return res.json()
# benar — pakai client async
@app.get("/report")
async def report():
async with httpx.AsyncClient() as client:
res = await client.get("https://slow-api.com/data")
return res.json()
Kalau memang harus pakai library yang sync-only, bungkus pakai
fastapi.concurrency.run_in_threadpool supaya tidak block event loop utama.
2026-07-22 — Nginx: upload gagal senyap gara-gara client_max_body_size
User lapor upload dokumen sering gagal tanpa pesan error yang jelas di aplikasi.
Ternyata bukan bug di Laravel — Nginx sudah nolak request-nya duluan sebelum sampai
ke PHP-FPM, karena client_max_body_size default cuma 1MB.
http {
client_max_body_size 20M;
}
Baru sadar kalau upload_max_filesize/post_max_size di php.ini itu percuma
dinaikin kalau Nginx di depannya masih mentok di limit default.
2026-07-15 — Nginx: 504 Gateway Timeout di endpoint Python yang lama prosesnya
Endpoint Python buat generate laporan (prosesnya berat, > 1 menit) selalu balikin
504 lewat Nginx padahal kalau diakses langsung ke port FastAPI-nya lancar. Ternyata
proxy_read_timeout default Nginx cuma 60 detik.
location /api/py/ {
proxy_pass http://127.0.0.1:8000/;
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
Solusi jangka panjang sebenarnya bikin endpoint itu jadi job async (queue) daripada nunggu di request, tapi buat sekarang naikin timeout dulu cukup.
2026-07-02 — Laravel: config:cache bikin perubahan .env tidak ke-apply
Ganti value di .env production, restart PHP-FPM, tapi aplikasinya masih pakai
value lama. Lupa kalau project ini pakai php artisan config:cache di step deploy
— begitu config di-cache, Laravel berhenti baca .env langsung dan selalu pakai
file cache-nya.
php artisan config:clear # hapus cache lama
php artisan config:cache # generate ulang dari .env terbaru
Sekarang dua command itu saya taruh berurutan di script deploy, jangan cuma
config:cache doang.
Lanjutan bulan Agustus ada di 01.TIL/2026-08.md.