如何使用 Flask 和异步自动刷新?

问题描述 投票:0回答:0

`嗨,我的代码有问题。 该代码实际上运行良好。我正在收到第一篇文章,然后是另一篇,我不必等待加载所有文章。

但现在我想使用 Flask 在 HTML 中显示这些信息。

我已经创建了主视图,但它只显示第一个摘要。 有人可以帮助我如何使用 Flask 以与在命令行上显示数据相同的方式显示这些数据吗?

例如:

  1. 页面加载,显示第一个摘要
  2. 下一个摘要已准备就绪,它与第一个摘要一起显示在 HTML 页面上。
  3. 等等

summaryzer.py

import os

import aiohttp
import openai
from dotenv import load_dotenv

from news import News

load_dotenv()


async def get_openAI_data_async(article_text):
    openai.api_key = os.getenv('OPEN_AI_KEY')
    async with aiohttp.ClientSession() as session:
        response = await session.post(
            "https://api.openai.com/v1/engines/text-davinci-003/completions",
            json={
                "prompt": f'Podsumuj ten artykuł w języku polskim w około 100 słowach """ {article_text} """" ',
                "temperature": 0.2,
                "max_tokens": 256,
                "stop": None
            },
            headers={
                "Content-Type": "application/json",
                "Authorization": f"Bearer {openai.api_key}"
            }
        )
        response_data = await response.json()
        return response_data['choices'][0]['text']


async def return_article_summary_async():
    news = News()
    articles = news.get_news_urls()

    summaries = []
    for article in articles:
        summary = await get_openAI_data_async(article)
        summaries.append([summary])
        yield summary

它允许我将许多文章传递给 openAI API,然后在 main.py 中使用这段代码返回结果

import asyncio
from summaryzer import return_article_summary_async


async def main_async():
    async for summary in return_article_summary_async():
        print(summary)


if __name__ == '__main__':
    asyncio.run(main_async())

现在 Flask 的主要功能版本只返回第一篇文章

from flask import Flask, render_template
from summaryzer import return_article_summary_async

app = Flask(__name__)

@app.route('/')
async def article_summaries():
    async for summary in return_article_summary_async():
        return render_template('index.html', summaries=summary)


if __name__ == '__main__':
    app.run(debug=True)
  <body>
    <h1>Article Summaries</h1>
        <p>{{ summaries }}</p>
  </body>

我试图用 javascript 创造一些魔法,但这不是我的语言,我失败了`

python api flask asynchronous openai-api
© www.soinside.com 2019 - 2024. All rights reserved.