* Fix for session shenanigans with WebsocketDemultiplexer
Session data was getting lost in the demux due to the session getting
saved after only the first connect/disconnect consumer was run.
* fix for flake8
* flake8 again
flake8 again
* User friendly way to close websocket with status
* More generic way to close(whatever) connection by exception
* Fix import ordering for exceptions (isort)
* more consistent metrics
More consistent metrics, in particular for consumers such as Graphite, CloudWatch etc. you don't want aggregated numbers per second, you want number since previous call. Since we don't want to track all the clients, total since start is the next best thing, because it can be easily calculated by the metrics consumer `count_since_last = pervious_count - current_count`
* changing 'queue_depth' to 'messages_pending', also making 'messages' plurar for 'max_age' to keep it consitent
* Added accept at default behavior for websocket generic cbv and pass message instead of dict
* Fix flake8
* Use HttpClient Instead of Client
* Fix lsort
* Fixed import to resolve RemovedInDjango20Warning
That resolves: "RemovedInDjango20Warning: Importing from django.core.urlresolvers is deprecated in favor of django.urls."
* Fixed syntax error
Fixed indent
* Updated import order
* pass save's kwargs to serialize
So it can access update_fields
* added short explanation
* added missing kwargs
* use update_fields to filter fields to serialize
* save kwargs on self
* get signal_kwargs from self
* whitespace
* just save signal_kwargs on self+removed left over kwargs
* Starting reporting write up.
* Added in charts
* Added in images to report
* Cleaned up comments
* Added in clarifications about the testing
* Added in clarification
* Added date
* Added in subdir with same content
* Added in supervisor configs
* updated the readme
* Update and rename README.rst to README.md
* Update README.md
* Added in version info.
* Changes to root info
* Update README.md
* Update README.md
* Cleaned up presentation
* Update README.rst
* Updated images
* Updated images and content
* Added in summary
* Starting reporting write up.
* Added in charts
* Added in images to report
* Cleaned up comments
* Added in clarifications about the testing
* Added in clarification
* Added date
* Added in subdir with same content
* Added in supervisor configs
* updated the readme
* Update and rename README.rst to README.md
* Update README.md
* Added in version info.
* Changes to root info
* Update README.md
* Update README.md
* Cleaned up presentation
* Update README.rst
* Updated images
* Updated images and content
* Add Delay Protocol Server
Add a process that listens to a specific channel
and delays incoming messages by a given time.
* Add custom django command rundelay
* Add test suite
* Implements #115
* Add channels.delay app
* Add AppConfig
* Move rundelay command to channels.delay app
* Refactor DelayedMessage into model
Move login into a database backed model.
* Update Worker
* Add migration
* Add delay docs page
* Add to TOC
* Fix import sorting
* Add ASGI spec document for Delay Protocol
* Update channels.delay doc with new channel name
* remove interval docs
* Refactor Delay to use milliseconds instead of seconds
Use milliseconds as the default unit. Gives more control to developers.
* Remove interval logic from DelayedMessage
* Remove interval tests
* Tweak test logic to use milliseconds
* Pass FORCE_SCRIPT_NAME to Daphne server when set
FORCE_SCRIPT_NAME seems not to be honored any more with build-in runserver after activating channels app.
The normal behavior of Django is the FORCE_SCRIPT_NAME is used as prefix when set while generating URLs so its possible to
create a path prefix and determine different Django installations based on the path rather than hostname without having to prefix all paths in urls.py.
* Only strip script_name from path if it starts with it
* make tests happy again after setting kwarg root_path