request.get to localhost即将超时

时间:2017-02-02 19:16:55

标签: python python-3.x python-requests wsgi falconframework

我试图从一个处理程序到另一个处理程序执行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 个答案:

答案 0 :(得分:1)

您可能正在使用命令行中的gunicorn运行此操作,如教程中所示:

$ gunicorn sample:api

这意味着gunicorn的默认值为one worker processsync workerone thread

此设置一次只能处理一个请求,任何进一步的请求都将阻塞,直到上一个请求完成。因此,如果您尝试从应用程序中向同一服务器发出请求,那么您将陷入僵局。

为此,您可以增加工作进程和线程的数量,例如:

$ gunicorn --workers 2 --threads 4 sample:api
相关问题