Как использовать async для продолжения задачи после возврата ответа? - PullRequest
0 голосов
/ 26 марта 2019

Я создал Flask API для своего веб-мастера и хочу запустить его, когда получен запрос POST, и как только он начнет работать, верните ответ вместо ожидания завершения работы скребка.

I 'я только начал пытаться внедрить asyncio в мой код, но я не понимаю, как я могу пропустить ожидание ответа, я тестировал приведенный ниже код с почтальоном, но он все еще зависает в ожидании ответа

Этомой код пока:

import subprocess
from flask import Flask
import asyncio

application = Flask(__name__)

async def parse_request(data):
    command = './portal_scrape.py -us "{user}" -p "{password}"-url "{url}"'.format(**data)
    output = subprocess.check_output(['bash','-c', command])

@application.route('/scraper/run', methods=['POST'])
def init_scrape():
        loop = asyncio.get_event_loop()
        # I want task1 to start running and then return data to postman
        task1 = asyncio.ensure_future(parse_request(request.json))
        loop.run_until_complete(task1)
        return jsonify({'Scraping this site: ': "url"}), 201
    except Exception as e:
                print(e)
if __name__ == '__main__':
    application.run(host="0.0.0.0", port="8080")
...