我正在使用异步方法返回对象数组,并且收到“ TypeError:不是JSON可序列化的”错误,并且不确定如何更正。这是我的代码:
async def fetch(session, url):
async with session.get(url) as response:
return await response.text
class NewStoriesHandler(tornado.web.RequestHandler):
async def get(self):
self.set_header("Access-Control-Allow-Origin", "*")
response = requests.get(
"https://hacker-news.firebaseio.com/v0/newstories.json?print=pretty")
data = response.json()
story_list = []
async with aiohttp.ClientSession() as session:
for url in data:
story_list.append(fetch(session, url))
print(story_list)
self.write(json.dumps(story_list, default=json_util.default))
self.finish()
我试图将Json返回到该方法,但未成功,我不确定它期望返回什么。循环为每个调用返回一个对象,并将其附加到数组。
答案 0 :(得分:1)
在我看来,您正在将协例程对象添加到列表中,而不是协程的结果。
我认为您应该await
每次抓取,然后再将它们添加到列表中。由于我当前正在旅行,所以我无法运行代码,但是您可能还需要一种策略来等待每个任务开始执行。