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.
The original implementation of Itchat will block forever with query for QRCode from time to time when the user does not scan QRCode after launches of login process. However this does not meet our needs of our project, which spawns many WeChat robots with ItChat on the backend server.
If there are users who don't scan the code to proceed the login process, the login process, which runs asynchronously in our server as a separate thread, will hang and write QRCode data to the session all the time, causing serious resource waste and making the server unable to respond eventually.
Thus, I propose that the login process of Itchat have a timeout option. By default the
login()
andauto_login()
still waits for users until they scan the code, but when thetimeout
option is specified the login process will break by force after dedicated seconds, releasing the occupied threading resources, as well as preventing ongoing query for QRCode even though the users have already given up logging in.