Время запросов на локальный хост истекает

Я пытаюсь сделать 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
Другие вопросы по тегам