-
-
Notifications
You must be signed in to change notification settings - Fork 3.8k
Coding for speed in GAE
When writing backend functions, it is good to keep in mind the effect that the written function has on an end user who is using a feature that calls that particular function, particularly the speed.
If a lot of database requests are required in the backend, it can lead to slowdown for the end user. Hence, it is best to keep the total number of database requests to a minimum on any new function that is written in the backend, as much as possible.
Try to use the get_multi
function if the keys of all the models to be fetched are known beforehand or get_all
to fetch every database entry for a class, though even this one, use only if it's absolutely needed. To filter models based on other conditions, some other GAE functions can be used such as query()
with filters.
You can refer to this function in the codebase for an example on how to use filters to directly fetch the required models from the datastore.
The official documentation for the query
function can be found here.
Have an idea for how to improve the wiki? Please help make our documentation better by following our instructions for contributing to the wiki.
Core documentation
Developing Oppia
- FAQs
- Installing Oppia
- Getting started with the codebase
- Making your first PR
- Learning resources for developers
- Codebase Overview
- Coding Guidelines
- Coding style guide
- Guidelines for creating new files
- How to add a new page
- How to write frontend type definitions
- How to write design docs
- Revert and Regression Policy
- Server errors and solutions
-
Debugging
- If your presubmit checks fail
- If CI checks fail on your PR
- Finding the commit that introduced a bug
- Interpreting GitHub Actions Results
- Debugging Docs
- Debugging datastore locally
- Debugging end-to-end tests
- Debugging backend tests
- Debugging frontend tests
- Debug frontend code
- Debugging custom ESLint check tests
- Debugging custom Pylint check tests
- Debugging Stories
- Guidelines for launching new features
- Guidelines for making an urgent fix (hotfix)
- Lint Checks
- Oppia's code owners and checks to be carried out by developers
- Privacy aware programming
- Backend Type Annotations
- Bytes and string handling in Python 3
- Guidelines for Developers with Write Access to oppia/oppia
- Testing
- Release Process
Developer Reference
- Oppiabot
- Frontend
- Backend
- Translations
- Webpack
- Third-party libraries
- Extension frameworks
- Oppia-ml Extension
- Mobile development
- Mobile device testing
- Performance testing
- Build process
- Team structure
- Triaging Process
- Playbooks
- Wiki
- Past Events