Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There's a 10 second debounce when using
async_request_refresh
. If we don't want a debounce we should useasync_refresh
.There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@MartinHjelmare I am a bit torn on this, I know that the netgear API can be overloaded by sending to many requests wich can actually cause the API to crash in some rare cases (a reboot of the router is then nessesary).
So if someone makes an automation to for instance block a list of 10 devices at a specific time (for instance at bedtime of there childeren) I don't want to have 10 update API requests at once. (these updates request a whole list of properties for all connected devices so it is a rather big XML file that is requested from the Router, a single update normaly takes around 2 seconds).
Therefore I think the debounce is actually a good thing.
Am I correct that it will run the update immediately if the last update was more then 10 seconds ago?
What happens if we were to call
async_refresh
10 times within 1 second while the actual update takes about 2 seconds (so 2x10 = 20 seconds), Note there is a AsyncLock on the API?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes, the debouncer will run the refresh immediately if the last refresh was more than 10 seconds ago.
Since we have the lock, the calls will be done sequentially.
Should we stick with the debounced refresh then?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes lets stick to the debounced refresh, I think that will cause less problems.