Итак, недавно я занимался созданием веб-сайта с использованием Pyscript. Но я не могу заставить asyncio в Python работать с функцией, которую я написал в JS. Есть способ напрямую написать эту функцию на Python, но я пока не уверен, как это сделать (предположительно, это можно сделать либо с помощью pyfetch, либо с помощью окна импорта, основная проблема в том, что я не понимаю, как добавить дополнительные опции)
async function catchJob(ean){
const encodedParams = new URLSearchParams();
encodedParams.append("source", "amazon");
encodedParams.append("country", "de");
encodedParams.append("values", ean);
const options = {
method: 'POST',
headers: {
'content-type': 'application/x-www-form-urlencoded',
'X-RapidAPI-Key': '*****************',
'X-RapidAPI-Host': '*************'
},
body: encodedParams
};
let obj
const res = await fetch('URL', options);
obj = await res.json();
getPrice(obj.job_id)
}
Я пытался сделать что-то похожее на это, но безрезультатно:
async def getPrice(id):
options = {
method: 'GET',
headers: {
'X-RapidAPI-Key': '',
'X-RapidAPI-Host': ''
}
}
res = await pyfetch(f'https://price-analytics.p.rapidapi.com/poll-job/{id}', options)
print(res)
Кроме того, большая проблема, с которой я сталкиваюсь, заключается в том, что я не понимаю, как инициализировать функцию после того, как я ее написал. Если кто-то с опытом в этой теме может помочь, я был бы признателен за это любезно! Спасибо за ответы и хорошего дня!






Насколько я понимаю, в то время как «выборка» JavaScript может принимать объект параметров в качестве аргумента, pyfetch принимает аргументы ключевого слова. Кроме того, ваш print(res) напечатает объект ответа, а не содержание ответа. Что-то вроде этого выполнит вызов API и отобразит содержимое объекта ответа. Обратите внимание, что я создал переменную «результат» для хранения ответа json, а затем распечатал ее.
<py-script>
import asyncio
from pyodide.http import pyfetch
...
async def getPrice(id):
headers = {'X-RapidAPI-Key': '',
'X-RapidAPI-Host': ''}
res = await pyfetch(f'https://price-analytics.p.rapidapi.com/poll-job/{id}', headers=headers, method = "GET")
result = await res.json()
print(result)
...
</py-script>
В качестве альтернативы, если вы хотите сохранить свои параметры в переменной options, вам нужно будет передать «options» в качестве аргумента ключевого слова. Также обратите внимание, что ключи в вашем словаре параметров были изменены на строки («метод», «заголовки» и метод, заголовки).
async def getPrice(id):
options = {
'method': 'GET',
'headers': {
'X-RapidAPI-Key': '6f*****************************e3',
'X-RapidAPI-Host': 'price-analytics.p.rapidapi.com'
}
}
res = await pyfetch(f'https://price-analytics.p.rapidapi.com/poll-job/{id}', **options)
print(res)
Что касается вашего утверждения: «Кроме того, большая проблема, с которой я столкнулся, заключается в том, что я не понимаю, как инициализировать функцию после того, как я ее написал», как должна работать страница? Вводится ли параметр «id» в поле ввода пользователем, который затем должен активировать функцию, возможно, нажав кнопку отправки?
Кроме того, вкратце, я бы поостерегся публиковать ваш ключ API на общедоступном форуме. Ваше здоровье!
Да, это очень помогло в понимании всего этого, но я давно решил эту проблему совсем по-другому!