Ошибка типа: объект ‘coroutine’ не может быть подписан в платформе python Quart Framework

#python-requests

#python-запросы

Вопрос:

 from quart import Quart, request, render_template, jsonify
import json
import os, sys
import pandas as pd
import requests
import asyncio

from pylon.model.db_models import RawFiles
from pylon.orm import db

app = Quart(__name__)

@app.route('/upload', methods=['POST'])
async def handle_form():
    f = await request.files['filename']
    f.save(f.filename)
    data = pd.read_csv(f.filename)
    data.to_json("json_data.json")
    data = pd.read_json("json_data.json")
    os.remove("json_data.json")
    os.remove(f.filename)
    print(type(data))
    print(data)
    return ""

@app.route("/")
async def index():
    return await render_template('upload.html')

if __name__ == "__main__":
    app.run(host="bheem11.arch.des.co", port=5043, debug = True)
  

Я получаю одну ошибку, описанную в заголовке. Я работаю в платформе quartz на python. Надеемся на правильное решение. На самом деле я получаю ошибку сопрограммы при выполнении @app.route («/upload», методы = «post»).

Ответ №1:

Эта строка await request.files['filename'] должна быть (await request.files)['filename'] . Без круглой скобки сначала вычисляется все, что находится справа от await , что приводит к попытке подписаться ( ['filename'] операции) на files атрибут. Это не работает, так как files атрибут возвращает сопрограмму, которая не подлежит подписке. Подробнее об этом в документации Quart.