我有django app。 应用程序 - 具有授权的站点客户端 应用程序包含一些定期运行的方法,但所有方法都创建了auth对象,例如:方法运行10次,重新自动化10次。 我尝试了存储该对象的会话但得到错误:
def get_api_instance(request):
if 'api' not in request.session:
api = auth()
request.session['api'] = api
return request.session['api']
<****api.api.Api object at 0x7fe30d155550> is not JSON serializable
你能推荐什么吗?
UPD: 在简单的python脚本中,我可以创建全局变量:
api_var = None
def get_api():
if not api_var:
api_var = auth()
return api_var
def periodic():
api = get_api_var()
....
答案 0 :(得分:1)
您可以向User对象添加一个函数来获取Auth类实例,您也可以使用propery缓存只创建一次:
from django.contrib.auth.models import User
from django.utils.functional import cached_property
def user_get_auth(self):
# Initialze the Auth class here
return Auth()
User.add_to_class("get_auth", cached_property(user_get_auth))
在views.py或模板中,您可以通过以下方式获取Auth类:
request.user.get_auth.some_method()