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.
This PR addresses the issue raised in #78 about the fact that it is difficult to add new spiders when you need to manually pass through meta fields and increment the stats collectors.
Meta Passthrough Middleware - passes response meta fields to new request's generated from the spider. The spider does not have to manually copy over all meta fields, instead the middleware will pass through all meta fields that have not been set already in the new request. This allows the spider to still set meta fields or override things in the Request, and not have to worry about the middleware stomping over them.
Redis Stats Middleware - Moves the stats collection from the spider and into the spider middleware stack. This analyzes the response as they come in and updates the stats collection within redis. This again removes an unnecessary step when processing the response in your spider.
Both of these reduce spider complexity and move logic into a more portable area. I added tests and documentation as well.