我正在使用flask和MongoDB创建和启动AWS EC2实例,并为不同用户记录这些实例。但当我试图调用我编写的用于检索文档的函数时,会返回以下错误:
TypeError:视图函数没有返回有效的响应。返回类型必须是字符串、字典、元组、响应实例或WSGI callable,但它是一个协程。
追溯:
Traceback (most recent call last):
File "C:\Users\vishn\.virtualenvs\GameFlow-backend(flask)-QWbAV1pw\Lib\site-packages\flask\app.py", line 2088, in __call__
return self.wsgi_app(environ, start_response)
File "C:\Users\vishn\.virtualenvs\GameFlow-backend(flask)-QWbAV1pw\Lib\site-packages\flask\app.py", line 2073, in wsgi_app
response = self.handle_exception(e)
File "C:\Users\vishn\.virtualenvs\GameFlow-backend(flask)-QWbAV1pw\Lib\site-packages\flask\app.py", line 2070, in wsgi_app
response = self.full_dispatch_request()
File "C:\Users\vishn\.virtualenvs\GameFlow-backend(flask)-QWbAV1pw\Lib\site-packages\flask\app.py", line 1516, in full_dispatch_request
return self.finalize_request(rv)
File "C:\Users\vishn\.virtualenvs\GameFlow-backend(flask)-QWbAV1pw\Lib\site-packages\flask\app.py", line 1535, in finalize_request
response = self.make_response(rv)
File "C:\Users\vishn\.virtualenvs\GameFlow-backend(flask)-QWbAV1pw\Lib\site-packages\flask\app.py", line 1727, in make_response
raise TypeError( TypeError: The view function did not return a valid response. The return type must be a string, dict, tuple,
Response instance, or WSGI callable, but it was a coroutine.
127.0.0.1 - - [14/Jun/2021 08:37:23] "GET /dashboard?__debugger__=yes&cmd=resource&f=style.css HTTP/1.1" 200 -
127.0.0.1 - - [14/Jun/2021 08:37:23] "GET /dashboard?__debugger__=yes&cmd=resource&f=debugger.js HTTP/1.1" 200 -
127.0.0.1 - - [14/Jun/2021 08:37:23] "GET /dashboard?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1" 200 -
127.0.0.1 - - [14/Jun/2021 08:37:23] "GET /dashboard?__debugger__=yes&cmd=resource&f=ubuntu.ttf HTTP/1.1" 200 -
127.0.0.1 - - [14/Jun/2021 08:37:23] "GET /dashboard?__debugger__=yes&cmd=resource&f=console.png HTTP/1.1" 200 -
我的数据库代码是:
client = motor.AsyncIOMotorClient(MONGO_DETAILS)
database = client['vm-data']
db = database
async def create_user(data_value: dict):
new_value = await db["vm-form"].insert_one(data_value)
created_value = await db["vm-form"].find_one({"_id": new_value.inserted_id})
print(created_value)
return created_value
async def retrieve_data(data_id):
data_val = await db['vm-form'].find_one({'email': data_id})
return data_val
async def update_data(id):
data_val = await db['vm-form'].update_one()
我从调用的函数是:
async def dashboard():
data_val = session[constants.PROFILE_KEY]
email = data_val['email']
user_name = data_val['name']
response = await retrieve_data(email)
instance_state = response['instance_state']
if instance_state == 'running':
return render_template('dashboard.html',
userinfo=session[constants.PROFILE_KEY], vm_data='Hydrogen', vm_type='Windows Instance',
userinfo_pretty=json.dumps(session[constants.JWT_PAYLOAD], indent=4))
else:
return render_template('dashboard.html',
userinfo=session[constants.PROFILE_KEY],
userinfo_pretty=json.dumps(session[constants.JWT_PAYLOAD], indent=4))
我不确定这些数据是否足以解决这个错误,但是任何帮助都将不胜感激!
此外,关于如何检查用户是否有权访问实例的任何建议(就像我在仪表板功能中尝试做的那样)都将非常棒!
提前致谢!
所以,我让它工作了。当我将requires_auth头放在@app.route()上方时,它工作了(我忘记在问题中添加它了)。
我在处理我的第一个烧瓶Web应用程序时遇到了此错误。在这个应用程序中,我试图通过使用Uber H3和haversine公式来获得两点之间的距离。我是这方面的初学者,所以任何帮助将不胜感激。 类型错误:视图函数未返回有效响应。返回类型必须是字符串、字典、元组、响应实例或 WSGI 可调用,但它是一个 int。
拥有以下实体:
问题内容: 这是我自制的序列化课程: 这是网络方法 Ajax调用客户端 最后,我的回调方法 rsp.d是包含所有属性的字符串…属性本身是未定义的。我知道我在这里缺少一些简单的东西。 从服务器返回的字符串 问题答案: 您不应该手动序列化返回值。ASP.NET将为您做到这一点。尝试这样的事情: 如果您需要返回更动态的内容(例如您的示例似乎正在做的事情),则可以使用匿名类型:
我不知道我的代码发生了什么。我似乎无法弄清楚为什么数组会给我这个错误。该行是特别是 我的代码:
我在代码中收到“必须是数组类型,但它解析为字符串”错误。它还说i(在下面的代码中)不能解析为我没有得到的变量。 } 你们能帮我找出问题所在吗?我是Java编码的新手,所以我对这种格式还不完全满意。 非常感谢,朱奈德
我使用的是Python3.3,但在尝试pickle一个简单的字典时出现了一个隐秘的错误。 代码如下: 我得到: