Время запросов на локальный хост истекает
Я пытаюсь сделать http-запрос от одного обработчика к другому, но время ожидания истекло. Зачем? Использование библиотеки запросов работает, но не с 127.0.0.1
# sample.py
import falcon
import json
import requests
class TS:
def on_get(self, req, resp):
output = {
'output': 'DataService.',
'author': 'Python3'
}
resp2 = requests.get('http://127.0.0.1:8000/a')
resp.body = json.dumps(output)
resp.status = falcon.HTTP_200
class SE:
def on_get(self, req, resp):
output = {
'output': 'Service.',
'author': 'Python3'
}
resp.body = json.dumps(output)
api = falcon.API()
api.add_route('/a', SE())
api.add_route('/t', TS())
Я получаю этот журнал ошибок
[2017-02-02 20:41:05 +0100] [27515] [CRITICAL] WORKER TIMEOUT (pid:27544)
1 ответ
Вы, вероятно, запускаете это с помощью gunicorn
из командной строки, как показано в руководстве:
$ gunicorn sample:api
Это означает, что gunicorn запускается по умолчанию с одним рабочим процессом, который является рабочим синхронизации с одним потоком.
Эта установка может обрабатывать только один запрос за раз, любой дальнейший запрос будет блокироваться до тех пор, пока предыдущий не будет завершен. Поэтому, если вы попытаетесь сделать запрос из своего приложения на тот же сервер, у вас будет тупик.
Чтобы это работало, вы можете увеличить количество рабочих процессов и потоков, например:
$ gunicorn --workers 2 --threads 4 sample:api