我正在寻找在不实际使用AWS云的情况下测试AWS服务的方法.Python是首选语言.
使用一些模拟组件,让我测试使用AWS S3,Redshift,Lambda,Dynamodb等的代码
到目前为止,我发现,
还有其他选择吗?
我正在使用DynamoDB本地从nodejs(Javascript SDK)运行集成测试.当我调用getRecords时,我得到"TrimmedDataAccessException".如果我在AWS(非本地)中针对DynamoDB运行相同的代码,它可以正常工作.这是步骤:
"put"命令的顺序很重要.如果我把"EventStore"放在首先一切正常,但是当我首先使用"Music"时它会失败.如果我更改顺序,我的应用程序逻辑将是错误的,因此只更改顺序对我来说是一个问题.
运行DynamoDB
java -Djava.library.path=./DynamoDBLocal_lib -jar DynamoDBLocal.jar -sharedDb -dbPath /data
Run Code Online (Sandbox Code Playgroud)
CREATETABLE
{
TableName: "EventStore",
KeySchema: [
{ AttributeName: "EntityId", KeyType: "HASH" },
{ AttributeName: "Version", KeyType: "RANGE" }
],
AttributeDefinitions: [
{ AttributeName: "EntityId", AttributeType: "S" },
{ AttributeName: "Version", AttributeType: "N" }
],
ProvisionedThroughput: {
ReadCapacityUnits: 10,
WriteCapacityUnits: 10
},
StreamSpecification: {
StreamEnabled: true,
StreamViewType: "NEW_IMAGE"
}
}
Run Code Online (Sandbox Code Playgroud)
createTable(响应)
{
"TableDescription": {
"AttributeDefinitions": [
{
"AttributeName": "EntityId",
"AttributeType": "S" …Run Code Online (Sandbox Code Playgroud) 我的Flask应用程序将url路由定义为
self.add_url_rule('/api/1/accounts/<id_>', view_func=self.accounts, methods=['GET'])
Run Code Online (Sandbox Code Playgroud)
问题是对此应用程序进行查询的应用程序之一添加额外的/在url中//api/1 // accounts/id.我无法控制进行此类查询的应用程序,因此我无法对其进行更改.
为解决此问题,我目前添加了多个规则
self.add_url_rule('/api/1/accounts/<id_>', view_func=self.accounts, methods=['GET'])
self.add_url_rule('/api/1//accounts/<id_>', view_func=self.accounts, methods=['GET'])
Run Code Online (Sandbox Code Playgroud)
有很多这样的路线,这是丑陋的解决方法.在点击路由逻辑之前,是否有一种方法可以修改URL?
我正在尝试使用列表形成字符串。
如果list具有单个元素,l = [10]则应为string 10
如果有多个元素,l = [10,20,30]则应为string10,20,30
我尝试过,但总是,在末尾附加额外内容。
"".join("%s," % x for x in l)这产生10,与10,20,30,上面列出
python 结构的几个问题。请让我知道什么是正确的。
文档提到 l/L 的长度为 4,但是当使用 calcsize 检查时,它给出 8。
>>> struct.calcsize('l')
8
Run Code Online (Sandbox Code Playgroud)struct module calcsize 给出了错误的大小。如果计算单个元素大小,其总和为 90,但与 calcsize 一起计算时,其结果为 92。
>>> struct.calcsize('8s2sIII30s32s6s')
92
>>> struct.calcsize('8s')
8
>>> struct.calcsize('2s')
2
>>> struct.calcsize('III')
12
>>> struct.calcsize('30s')
30
>>> struct.calcsize('32s')
32
>>> struct.calcsize('6s')
6
Run Code Online (Sandbox Code Playgroud)