Flask 最大递归深度
Flask Max Recursion Depth
我有一个 max recursion depth
错误让我抓狂
在烧瓶 __init__.py
文件中我有:
@app.route('/vpcs')
@app.route('/vpcs/<vpc>')
def getVPCs(vpc=False):
"""
Get the vpcs.
"""
results = getVPCs()
return jsonify(**results)
它调用以下函数:
def getVPCs():
"""
This is the function that loops through the accounts and regions and does all the connections.
"""
使用帐户密钥循环遍历配置文件的函数
accounts = getAccountCreds()
vpc_list = []
try:
遍历每个区域...
# 每个区域
对于区域中的 r:
遍历每个帐户
# for each of the 8,yes 8, AWS accounts...
for account,keys in accounts.iteritems():
conn = VPCConnection(region=ec2.get_region(r),aws_access_key_id=keys[0],aws_secret_access_key=keys[1])
获取每个账户的所有 VPC ...
vpcs = conn.get_all_vpcs()
if formatVPC(account,vpcs[0]):
vpc_list.append(formatVPC(account,vpcs[0]))
return vpc_list
except boto.exception.BotoServerError, e:
print e
这也调用:
def formatVPC(account,instance):
"""
Function to format VPC data.
Keys we want:
- id
- instance_tenancy
- tags
- region.name
- region.connection
- region.endpoint
- state
- cidr_block
"""
result_dict = {}
if instance:
result_dict['account'] = account
result_dict['id'] = instance.id
result_dict['cidr_block'] = instance.cidr_block
result_dict['instance_tenancy'] = instance.instance_tenancy
result_dict['region'] = {'name':instance.region.name,'connection': instance.region.connection,'endpoint':instance.region.endpoint}
if result_dict:
return result_dict
错误:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Library/Python/2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/Library/Python/2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/Library/Python/2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
https://docs.python.org/2/library/sys.html
sys.getrecursionlimit()
Return 递归限制的当前值,Python 解释器堆栈的最大深度。此限制可防止无限递归导致 C 堆栈溢出并崩溃 Python。可以通过setrecursionlimit()来设置。
It calls the functions from:
不,您代码段中的 getVPCs
只是调用自身:
@app.route('/vpcs')
@app.route('/vpcs/<vpc>')
def getVPCs(vpc=False):
"""
Get the vpcs.
"""
results = getVPCs() # Here.
return jsonify(**results)
并以递归方式执行此操作,除 recursion limit, which results in RuntimeError 外没有任何 "boundary":maximum recursion depth exceeded
您已经提到。
更改其中一个函数的名称(当然,必要时调整调用)。
我有一个 max recursion depth
错误让我抓狂
在烧瓶 __init__.py
文件中我有:
@app.route('/vpcs')
@app.route('/vpcs/<vpc>')
def getVPCs(vpc=False):
"""
Get the vpcs.
"""
results = getVPCs()
return jsonify(**results)
它调用以下函数:
def getVPCs():
"""
This is the function that loops through the accounts and regions and does all the connections.
"""
使用帐户密钥循环遍历配置文件的函数
accounts = getAccountCreds()
vpc_list = []
try:
遍历每个区域... # 每个区域 对于区域中的 r:
遍历每个帐户
# for each of the 8,yes 8, AWS accounts...
for account,keys in accounts.iteritems():
conn = VPCConnection(region=ec2.get_region(r),aws_access_key_id=keys[0],aws_secret_access_key=keys[1])
获取每个账户的所有 VPC ...
vpcs = conn.get_all_vpcs()
if formatVPC(account,vpcs[0]):
vpc_list.append(formatVPC(account,vpcs[0]))
return vpc_list
except boto.exception.BotoServerError, e:
print e
这也调用:
def formatVPC(account,instance):
"""
Function to format VPC data.
Keys we want:
- id
- instance_tenancy
- tags
- region.name
- region.connection
- region.endpoint
- state
- cidr_block
"""
result_dict = {}
if instance:
result_dict['account'] = account
result_dict['id'] = instance.id
result_dict['cidr_block'] = instance.cidr_block
result_dict['instance_tenancy'] = instance.instance_tenancy
result_dict['region'] = {'name':instance.region.name,'connection': instance.region.connection,'endpoint':instance.region.endpoint}
if result_dict:
return result_dict
错误:
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/flask/app.py", line 1836, in __call__
return self.wsgi_app(environ, start_response)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1820, in wsgi_app
response = self.make_response(self.handle_exception(e))
File "/Library/Python/2.7/site-packages/flask/app.py", line 1403, in handle_exception
reraise(exc_type, exc_value, tb)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1817, in wsgi_app
response = self.full_dispatch_request()
File "/Library/Python/2.7/site-packages/flask/app.py", line 1477, in full_dispatch_request
rv = self.handle_user_exception(e)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1381, in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/Library/Python/2.7/site-packages/flask/app.py", line 1475, in full_dispatch_request
rv = self.dispatch_request()
File "/Library/Python/2.7/site-packages/flask/app.py", line 1461, in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
https://docs.python.org/2/library/sys.html
sys.getrecursionlimit() Return 递归限制的当前值,Python 解释器堆栈的最大深度。此限制可防止无限递归导致 C 堆栈溢出并崩溃 Python。可以通过setrecursionlimit()来设置。
It calls the functions from:
不,您代码段中的 getVPCs
只是调用自身:
@app.route('/vpcs')
@app.route('/vpcs/<vpc>')
def getVPCs(vpc=False):
"""
Get the vpcs.
"""
results = getVPCs() # Here.
return jsonify(**results)
并以递归方式执行此操作,除 recursion limit, which results in RuntimeError 外没有任何 "boundary":maximum recursion depth exceeded
您已经提到。
更改其中一个函数的名称(当然,必要时调整调用)。