在Django Session中存储boto3会话对象

时间:2016-10-11 08:52:20

标签: python django python-2.7 boto3 django-sessions

我正在尝试在Django会话中存储boto3会话对象,以便我可以重用同一个对象,因为Django会话可用。 这为我使用boto3执行的每个操作保存了Auth请求。

boto3_session = boto3.Session(aws_access_key_id=request.POST.get("access_key"),
                              aws_secret_access_key=request.POST.get("secret_key"))
if not 'boto3_session' in request.session or not request.session['boto3_session']:
    request.session['boto3_session'] = boto3_session

我收到错误

TypeError: Session(region='eu-west-1') is not JSON serializable

boto3会话详情

ipdb> dir(boto3_session)
ipdb> ['__class__', '__delattr__', '__dict__', '__doc__', '__format__', '__getattribute__', '__hash__', '__init__', '__module__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__', '_loader', '_register_default_handlers', '_session', '_setup_loader', 'client', 'events', 'get_available_partitions', 'get_available_regions', 'get_available_resources', 'get_available_services', 'get_credentials', 'profile_name', 'region_name', 'resource', 'resource_factory']

尝试获取对象的词典

ipdb> boto3_session.__dict__
{'_loader': <botocore.loaders.Loader object at 0x104502450>, 'resource_factory': <boto3.resources.factory.ResourceFactory object at 0x1045023d0>, '_session': <botocore.session.Session object at 0x1044c6f50>}

当我尝试在会话中保存上面的dict时,我得到以下错误

TypeError: <botocore.loaders.Loader object at 0x109e5dd10> is not JSON serializable

我怎样才能使这个工作。我正在尝试不同的事情,但到目前为止都没有。

0 个答案:

没有答案