Remove multiprocessing.pool.ThreadPool
#498
Merged
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.
Description (e.g. "Related to ...", etc.)
This PR makes what should be a small breaking change to simplify the base
JsonRPCServer
slightly by removing the use ofmultiprocessing.pool.ThreadPool
.According to the docs, the only difference between the
ThreadPool
andThreadPoolExecutor
is the API. They even recommend the use of theThreadPoolExecutor
over theThreadPool
as the Future implementation used is compatible with other standard library modules - such asasyncio
.As a result
JsonRPCServer.thread_pool
now returns aThreadPoolExecutor
JsonRPCServer.thread_pool_executor
has been removedJsonRPCProtocol
has been tweaked to make use of theThreadPoolExecutor
for threaded handlers.Unless a server actively used the
thread_pool
orthread_pool_executor
attributes they are unlikely to even notice the change. Handlers registered with the@server.thread()
decorator should continue to work unmodified.While I was making changes to
JsonRPCProtocol
I've also tweaked the logs generated when the server receives an unknown request method - fixes #443Before
After
Code review checklist (for code reviewer to complete)
Automated linters
You can run the lints that are run on CI locally with: