如何使用Flask REST API运行webscraper,而不必等待它在返回响应之前完成?

2024-04-26 22:29:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个restfulapi,我用Flask构建,它运行webscraper下载文件。你知道吗

我想把它托管在一个linux EC2实例上,并使用NGINX和Gunicorn为它提供服务。你知道吗

我一直在用postman测试我的API,但是因为scraper大约需要10分钟来完成postman挂起等待响应。你知道吗

我的烧瓶应用程序如下所示:

from flask import Flask

application = Flask(__name__)

@application.route('/scraper/run', methods=['POST'])
def init_scrape():
    data = request.json
    command = './web_scrape.py -us "{0}" -p "{1}" -url "{2}"'.format(data['username'], data['password'], data['url'])

    # This takes about 10 minutes
    output = subprocess.check_output(['bash','-c', command])

    return jsonify({'Scraping this site: ': request.json["url"]}), 201

if __name__ == '__main__':
    application.run(host="0.0.0.0", port="8080")

有没有一种方法,我可以运行我的刮板不必等待它完成之前返回一些数据给邮递员?你知道吗


Tags: runnamejsonurlflaskoutputdataapplication