Caveats

Proxy Routing

You need to enable proxy setting by explicitly setting ENABLE_PROXY_ROUTING = True.

Reason:

Since the values passed to wsgi.input and wsgi.errors in request environ are io or socket streams, they cannot be deepcopied. So, we end up passing same streams to essentially two different requests. Network data cannot be seeked and cannot be read outside of its content length. So, we have to pass the same stream to the proxy handler also. The issue is that we cannot read multiple times from wsgi.input. Either it will raise exception or gives empty data or in the worst case deadlock.

Note

Proper care has been taken to prevent these issues. Still there might an issue which I might have overlooked.

Hence the proxy feature is disabled by default.

Warning

YOU HAVE BEEN WARNED!!!

Randomization

Routing does not use any custom cookies to tie the outcome to the user. It rather relies on the session key in deriving the outcome of the destinations.

No matter how many times user visits the source path, destination will always be the same.

Note

Destination for a user might change if

  • Session key changes. (Session key changes during login/logout)
  • New active destination has been added to the router or weightage of the active destinations has been changed. Since the sample space has been changed, outcome might vary.