[RFC 0/4] Add 'Event.payload' field
Stephen Finucane
stephen at that.guru
Wed Jan 10 11:40:20 AEDT 2018
The '/event' API endpoint is really slow due to the amount of JOINs
necessary to retrieve records from the database. Resolve this by
a static JSON representation of any embedded data in the database. This
has some disadvantages, noted in the patches, but the performance
improvement is huge and users will not notice a thing.
There are a couple of TODOs in here that I'd like to work on. In
addition, this uses Django REST Framework's serializers to generate
the embedded payload. This means we have to do one of the following:
- Require 'django-rest-framework' as a dependency, even if the actual
API is turned off
- Disable events when the REST API is disabled
I welcome input on the above along with the patches themselves.
Stephen Finucane (4):
Automatically remove old events
REST: Support embedded serializers without context
models: Migrate event fields to JSON field
REST: Only fetch required fields event filtering
docs/deployment/configuration.rst | 7 ++
docs/usage/overview.rst | 2 +
patchwork/api/embedded.py | 60 ++++++++---
patchwork/api/event.py | 110 +++++++++++++--------
patchwork/api/filters.py | 7 ++
patchwork/fields.py | 32 ++++++
patchwork/management/commands/cron.py | 2 +
.../migrations/0021_add_event_payload_field.py | 21 ++++
...22_migrate_data_from_event_fields_to_payload.py | 67 +++++++++++++
.../migrations/0023_remove_old_event_fields.py | 43 ++++++++
patchwork/models.py | 28 +-----
patchwork/notifications.py | 18 +++-
patchwork/settings/base.py | 3 +
patchwork/signals.py | 48 +++++++++
patchwork/tests/test_events.py | 110 +++++++++++++--------
...tically-remove-old-events-4ee222aaf4a6ea6c.yaml | 8 ++
16 files changed, 443 insertions(+), 123 deletions(-)
create mode 100644 patchwork/migrations/0021_add_event_payload_field.py
create mode 100644 patchwork/migrations/0022_migrate_data_from_event_fields_to_payload.py
create mode 100644 patchwork/migrations/0023_remove_old_event_fields.py
create mode 100644 releasenotes/notes/automatically-remove-old-events-4ee222aaf4a6ea6c.yaml
--
2.14.3
More information about the Patchwork
mailing list