perf: add __slots__ to most used classes (#17421)

Added slots for these classes:

- Session - Created on EACH request
- LoginManager - Created on each request
- Monitor - Created on each request if monitor is enabled (usually in
  prod setup)
This commit is contained in:
Ankush Menat 2022-07-07 11:15:50 +05:30 committed by GitHub
parent b115aef414
commit 1f9a6b010a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 7 additions and 0 deletions

View file

@ -109,6 +109,9 @@ class HTTPRequest:
class LoginManager:
__slots__ = ("user", "info", "full_name", "user_type", "resume")
def __init__(self):
self.user = None
self.info = None

View file

@ -30,6 +30,8 @@ def log_file():
class Monitor:
__slots__ = ("data",)
def __init__(self, transaction_type, method, kwargs):
try:
self.data = frappe._dict(

View file

@ -213,6 +213,8 @@ def generate_csrf_token():
class Session:
__slots__ = ("user", "device", "user_type", "full_name", "data", "time_diff", "sid")
def __init__(self, user, resume=False, full_name=None, user_type=None):
self.sid = cstr(
frappe.form_dict.get("sid") or unquote(frappe.request.cookies.get("sid", "Guest"))