The below details common problems when using Silk, most of which have been derived from the solutions to github issues.
Silk saves down the request and response bodies of each HTTP request by default. These bodies are often UTF encoded and hence it is important that Silk’s database tables are also UTF encoded. Django has no facility for enforcing this and instead assumes that the configured database defaults to UTF.
If you see errors like:
Incorrect string value: ‘xCExBB, xCFx86...’ for column ‘raw_body’ at row...
Then it’s likely your database is not configured correctly for UTF encoding.
See this github issue for more details and workarounds.
The middleware is placement sensitive. If the middleware before
silk.middleware.SilkyMiddleware returns from
SilkyMiddleware will never get the chance to execute. Therefore you must ensure that any middleware placed before never returns anything from
process_request. See the django docs for more information on this.
This GitHub issue also has information on dealing with middleware problems.