Я создаю приложение FastAPI, которое получает сообщение и изображение, чтобы вернуть отредактированное изображение на основе сообщения, предоставленного с изображением. Проблема в том, что приложение возвращает следующую ошибку:
Traceback (most recent call last):
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\starlette\middleware\errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\starlette\middleware\exceptions.py", line 79, in __call__
raise exc
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\starlette\middleware\exceptions.py", line 68, in __call__
await self.app(scope, receive, sender)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in __call__
raise e
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\starlette\routing.py", line 718, in __call__
await route.handle(scope, receive, send)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\starlette\routing.py", line 276, in handle
await self.app(scope, receive, send)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\starlette\routing.py", line 66, in app
response = await func(request)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\fastapi\routing.py", line 237, in app
raw_response = await run_endpoint_function(
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\fastapi\routing.py", line 163, in run_endpoint_function
return await dependant.call(**values)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\main.py", line 63, in reply
image_url = image_response.json()["response_data"]["result"]["output"][0]
KeyError: 'response_data'
Ниже приведен код приложения FastAPI. Я провел небольшое исследование и не смог найти ничего реального, поэтому обращаюсь за помощью к сообществу.
from fastapi import FastAPI, Form, File, UploadFile
import requests
from utils import send_message
from dotenv import load_dotenv
import os
import json
load_dotenv()
app = FastAPI(debug=True)
api_key = os.getenv("MONSTER_API_KEY")
bearer_token = os.getenv("BEARER_TOKEN")
whatsapp_number = os.getenv("TO_NUMBER")
@app.post("/message")
async def reply(file: UploadFile = File(...), prompt: str = Form(...)):
file.filename = "image.jpg"
contents = await file.read()
with open(f"{file.filename}", "wb") as f:
f.write(contents)
url = "https://api.monsterapi.ai/apis/add-task"
payload = {
"model": "pix2pix",
"data": {
"prompt": prompt,
"negprompt": "",
"steps": 50,
"guidance_scale": 12.5,
"init_image_url": file.filename,
"image_guidance_scale": 1.5
}
}
headers = {
'x-api-key': api_key,
'Authorization': bearer_token,
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
process_id = response.json()["process_id"]
response_url = "https://api.monsterapi.ai/apis/task-status"
response_payload = {
"process_id": process_id
}
response_headers = {
'x-api-key': api_key,
'Authorization': bearer_token,
'Content-Type': 'application/json'
}
image_response = requests.request("POST", response_url, headers=response_headers, data=response_payload)
image_url = image_response.json()["response_data"]["result"]["output"][0]
send_message(whatsapp_number, image_url)
return ""
Это содержимое response.json()
{'message': 'Request accepted successfully', 'process_id': 'eee2c49e-083a-11ee-b335-99c647f2e5d3'}
Это содержимое image_response.json():
{'message': 'Request processed successfully', 'response_data': {'process_id': 'eee2c49e-083a-11ee-b335-99c647f2e5d3', 'status': 'COMPLETED', 'result': {'output': ['https://processed-model-result.s3.us-ea ... e5d3_0.png']}, 'credit_used': 4, 'overage': 0}}
Это функция send_message():
import logging
from dotenv import load_dotenv
import os
from twilio.rest import Client
load_dotenv()
account_sid = os.getenv("TWILIO_ACCOUNT_SID")
auth_token = os.getenv("TWILIO_AUTH_TOKEN")
client = Client(account_sid, auth_token)
twilio_number = os.getenv('TWILIO_NUMBER')
# Set up logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# Sending message logic through Twilio Messaging API
def send_message(to_number, media):
try:
message = client.messages.create(
from_=f"whatsapp:{twilio_number}",
to=f"whatsapp:{to_number}",
media_url=[media]
)
logger.info(f"Message sent to {to_number}: {message.media_url}")
except Exception as e:
logger.error(f"Error sending message to {to_number}: {e}")
Подробнее здесь: https://stackoverflow.com/questions/764 ... pplication
KeyError: «response_data» в приложении FastAPI ⇐ Python
Программы на Python
-
Anonymous
1736682658
Anonymous
Я создаю приложение FastAPI, которое получает сообщение и изображение, чтобы вернуть отредактированное изображение на основе сообщения, предоставленного с изображением. Проблема в том, что приложение возвращает следующую ошибку:
Traceback (most recent call last):
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\starlette\middleware\errors.py", line 162, in __call__
await self.app(scope, receive, _send)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\starlette\middleware\exceptions.py", line 79, in __call__
raise exc
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\starlette\middleware\exceptions.py", line 68, in __call__
await self.app(scope, receive, sender)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in __call__
raise e
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in __call__
await self.app(scope, receive, send)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\starlette\routing.py", line 718, in __call__
await route.handle(scope, receive, send)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\starlette\routing.py", line 276, in handle
await self.app(scope, receive, send)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\starlette\routing.py", line 66, in app
response = await func(request)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\fastapi\routing.py", line 237, in app
raw_response = await run_endpoint_function(
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\venv\lib\site-packages\fastapi\routing.py", line 163, in run_endpoint_function
return await dependant.call(**values)
File "C:\Users\abu aisha\Documents\whatsappPhotoEditor\main.py", line 63, in reply
image_url = image_response.json()["response_data"]["result"]["output"][0]
KeyError: 'response_data'
Ниже приведен код приложения FastAPI. Я провел небольшое исследование и не смог найти ничего реального, поэтому обращаюсь за помощью к сообществу.
from fastapi import FastAPI, Form, File, UploadFile
import requests
from utils import send_message
from dotenv import load_dotenv
import os
import json
load_dotenv()
app = FastAPI(debug=True)
api_key = os.getenv("MONSTER_API_KEY")
bearer_token = os.getenv("BEARER_TOKEN")
whatsapp_number = os.getenv("TO_NUMBER")
@app.post("/message")
async def reply(file: UploadFile = File(...), prompt: str = Form(...)):
file.filename = "image.jpg"
contents = await file.read()
with open(f"{file.filename}", "wb") as f:
f.write(contents)
url = "https://api.monsterapi.ai/apis/add-task"
payload = {
"model": "pix2pix",
"data": {
"prompt": prompt,
"negprompt": "",
"steps": 50,
"guidance_scale": 12.5,
"init_image_url": file.filename,
"image_guidance_scale": 1.5
}
}
headers = {
'x-api-key': api_key,
'Authorization': bearer_token,
'Content-Type': 'application/json'
}
response = requests.post(url, headers=headers, json=payload)
response.raise_for_status()
process_id = response.json()["process_id"]
response_url = "https://api.monsterapi.ai/apis/task-status"
response_payload = {
"process_id": process_id
}
response_headers = {
'x-api-key': api_key,
'Authorization': bearer_token,
'Content-Type': 'application/json'
}
image_response = requests.request("POST", response_url, headers=response_headers, data=response_payload)
image_url = image_response.json()["response_data"]["result"]["output"][0]
send_message(whatsapp_number, image_url)
return ""
Это содержимое response.json()
{'message': 'Request accepted successfully', 'process_id': 'eee2c49e-083a-11ee-b335-99c647f2e5d3'}
Это содержимое image_response.json():
{'message': 'Request processed successfully', 'response_data': {'process_id': 'eee2c49e-083a-11ee-b335-99c647f2e5d3', 'status': 'COMPLETED', 'result': {'output': ['https://processed-model-result.s3.us-east-2.amazonaws.com/eee2c49e-083a-11ee-b335-99c647f2e5d3_0.png']}, 'credit_used': 4, 'overage': 0}}
Это функция send_message():
import logging
from dotenv import load_dotenv
import os
from twilio.rest import Client
load_dotenv()
account_sid = os.getenv("TWILIO_ACCOUNT_SID")
auth_token = os.getenv("TWILIO_AUTH_TOKEN")
client = Client(account_sid, auth_token)
twilio_number = os.getenv('TWILIO_NUMBER')
# Set up logging
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
# Sending message logic through Twilio Messaging API
def send_message(to_number, media):
try:
message = client.messages.create(
from_=f"whatsapp:{twilio_number}",
to=f"whatsapp:{to_number}",
media_url=[media]
)
logger.info(f"Message sent to {to_number}: {message.media_url}")
except Exception as e:
logger.error(f"Error sending message to {to_number}: {e}")
Подробнее здесь: [url]https://stackoverflow.com/questions/76449738/keyerror-response-data-in-fastapi-application[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия