Golang Context Explained - How To Use With Timeout
ฝัง
- เผยแพร่เมื่อ 25 ก.ย. 2023
- 🔍 If you're a Go developer looking to improve your understanding of context management and concurrency control, you're in the right place.
In this video, we break down the fundamentals of the Golang Context package, exploring its core concepts, practical applications, and best practices. Whether you're a beginner or an experienced Go developer, this tutorial has something valuable to offer.
Twitch
I stream live on Twitch every weekend
Twitch : / melkey
Join the amazing community on Discord
Discord: / discord
I post memes and host Twitter Tech Spaces
Twitter: / melkeydev
SUBSCRIBE OR GET LAID OFF
╔═╦╗╔╦╗╔═╦═╦╦╦╦╗╔═╗
║╚╣║║║╚╣╚╣╔╣╔╣║╚╣═╣
╠╗║╚╝║║╠╗║╚╣║║║║║═╣
╚═╩══╩═╩═╩═╩╝╚╩═╩═╝
#coding #neovim #typescript #programming #vim #softwareengineering #codinglife #webdesign #webdevelopment #webdev #javascript #rustlang #rust #twitch #twitchstreamer #programmerhumor #codinghumor #software #softwareengineer #softwaredeveloper #softwaredevelopment #gymbro #gym #programmerhumor #programming #coding #golang #go #goprogramming - วิทยาศาสตร์และเทคโนโลยี
I hope you all loved this video! Leave a like, comment, like + subscribe. It means the world to me. Let me know what video you want to see in the future!
But are we still waiting for 400ms? We are just not returning the result but an error right? Or how do we reach the ctx.Err() check before the 400ms run out?
You should put the long call in a goroutine with a loop and switch. What you've done here is not what contexts are for, you could've just measure the elapsed time and return error or otherwise.
Could you provide an example? This is what I'm trying to do right now and struggling
@@ashleyspianoprogress1341 th-cam.com/video/kaZOXRqFPCw/w-d-xo.html
Great video!
However, example could be better - since the function still blocks until the time it takes for the API call. I.e. if API call blocked for an hour, you'd need to wait for the whole hour, only to encounter deadline exceeded error.
^ Nevertheless, this vid presents a good starting point!
where would you error using the context in that case?
@@kartashuvit4971 have a for loop checking for the error then kill the http request
You should have used a goroutine with a select statement and check the ctx.Done() or the result. What are you doing in the example is just waiting for the result and throwing away if the time is exceed.
A video that is 8 minutes long with a trash thumbnail, ends up with a trash example. This channel is cooked lmao.
Nice video. Simple to the point
Context is really cool actually, good stuff
If the func in sleeping for 400ms (didn't reach the if statement) and the context is cancelled, how the "context timeout exceeded" error is reached?
it actually not canceled and continue to work. its just throw result out, because its too late. So this example is trash :) you actually need to cancel this function call in mid air if time is exceeded, so you need to run it in gorutine and wait outside in select for result or ctx.Done(), to not wait for this call to return something in a minute for example to just throw it away.
Could you boost the audio levels on your videos? I have to have my laptop speakers at 100% to be able to hear clearly, it is only with your videos
Laptop speakers? Gotta get that upgraded player!
your explanation is awesome bro
Thank you so much 😀
Great video! Any chance you can provide something on Authentication/Authorization with Go? Thanks!
MELKEY MELKEY MELKEY
Only context go needs is enums, sadge
Thanks for the great content. It would be nice to have less jumping around between zoomed in text editor / your camera / split view. Just sticking to split view would be easier to watch / follow. Thanks again.
Thanks for the feedback - Will do this for my next tutorial :)
Great examples as always, Melkey
how far are you in Berserk?
All caught up again
Used my actual userID😮
fix the audio pls
How do I get the values of an associative array in PHP?
i think it's in the go docs somewhere
arr[“key” => “value”]
$value = arr[“key”]
this is not it. your time.Sleep() is blocking