2013-09-08 2 views
3

Я разработал сервер REST, используя Flask в python, и в настоящее время он построен синхронно. следующий запрос обрабатывается только после завершения существующего запроса, и иногда это увеличивает время отклика. Большая часть обработки зависит от сети и занимает несколько секунд. Каковы наилучшие способы обработки, т.е. fork, чтобы я мог обрабатывать несколько запросов одновременно.Ввод входящих запросов с использованием колбы python

@app.route('call', methods = ['POST']) 
def create_task2(): 
    result = process(request) # takes around 5 seconds 
    return jsonify(result ), 201 

Когда 2 запроса направляются на мой restserver одновременно, второй приходится ждать по крайней мере 10 секунд до получения ответа. Я хочу использовать это в качестве запросов на обслуживание крейсеров для внешних пользователей

+0

Я полагаю, вы используете встроенный веб-сервер, а не внешний, как увольнитель, ...? – P3trus

+0

Да, я создаю веб-сервер. – raju

ответ

3

Это происходит только потому, что вы используете сервер разработки. Flask - это веб-фреймворк, а не веб-сервер.

Параллельный запрос обслуживания - это задача, обрабатываемая веб-серверами.

Вы можете использовать веб-сервер wsgi, такой как uWSGI, чтобы служить вашему фляжному приложению. Для еще большей производительности вы также можете делегировать статическую службу в NGINX, но для чистого REST-сервера обычно не требуется.

С помощью uWSGI вы можете указать количество рабочих процессов (процессов) параллельно.

Имейте в виду, что нет магии в обслуживании множества запросов. Даже если вы используете больше процессов или потоков, вы привязаны к числу одновременных запросов.