gunicorn worker 为每个请求退出

Mic*_*Kim 5 python gunicorn airflow apache-airflow

我有一个全新安装的apache-airflow 1.8.2,启动了它的网络服务器,它的 gunicorn 工作人员为每个网页请求退出,让请求挂起大约 30 秒,同时等待新工作人员产生。需要帮助解决这个问题。

详情如下

我已经安装apache-airflow 1.8.2并遵循了本指南。我在端口启动了网络服务器8081

现在,当我使用浏览器访问服务器时,响应非常慢。我查看了控制台输出,并注意到每次加载网页时,它都会显示“Worker existing”,然后暂停很长时间并显示“Booting worker”。

在挖掘源代码后,我发现这些是 gunicorn 工人。我没有使用 gunicorn 或气流或 Flask 的经验,所以我不知道这是否是预期的行为,但我觉得不应该。至少一个网络服务器不应该为每个网页挂起半分钟。

控制台输出:

---> Browser request
[2017-11-01 19:08:07 -0700] [14549] [INFO] Worker exiting (pid: 14549)
---> Hangs for 30s
[2017-11-01 19:08:37 -0700] [13316] [INFO] Handling signal: ttin
[2017-11-01 19:08:37 -0700] [14698] [INFO] Booting worker with pid: 14698
/Users/michael/Programs/clones/airflow/airflow/www/app.py:23: FlaskWTFDeprecationWarning: "flask_wtf.CsrfProtect" has been renamed to "CSRFProtect" and will be removed in 1.0.
  csrf = CsrfProtect()
/Users/michael/Programs/miaozhen/tests/airflow-test/lib/python3.6/site-packages/flask/exthook.py:71: ExtDeprecationWarning: Importing flask.ext.cache is deprecated, use flask_cache instead.
  .format(x=modname), ExtDeprecationWarning
127.0.0.1 - - [01/Nov/2017:19:08:37 -0700] "GET /admin/ HTTP/1.1" 200 95063 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/61.0.3163.100 Safari/537.36"
[2017-11-01 19:08:38,096] [14698] {models.py:168} INFO - Filling up the DagBag from /Users/michael/airflow/dags
---> other GET requests on the same webpage, skipped here for simplicity
[2017-11-01 19:08:39 -0700] [13316] [INFO] Handling signal: ttou
Run Code Online (Sandbox Code Playgroud)

现在我运行的源版本apache-airflow 1.8.2(即克隆的源,检查了标签,并与安装pip install -e .)的virtualenv。但是我也试过:运行 pypi 版本 ( pip install apache-airflow) 没有virtualenv; 运行不带virtualenv. 并且所有安装都存在相同的问题,因此这些差异无关紧要。

我的 Python 安装是:

$ python -VV
Python 3.6.3 (default, Oct  4 2017, 06:09:38) 
[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.37)]
Run Code Online (Sandbox Code Playgroud)

编辑:

我尝试apache-airflow在另一台机器(Ubuntu Linux 16.04 + Python 3.5)上安装和运行,没有问题。我也问了另一个Mac上用Python 3.6的人,也没有问题。我想我的机器有些奇怪……有什么建议可以调试这个东西吗?

Mic*_*Kim 0

好吧,在调试源代码后我设法隔离了问题,但是它与gunicorn无关。

问题是这样的

$ time python -c 'import socket; socket.getfqdn()'

real    0m30.051s
user    0m0.018s
sys     0m0.013s
Run Code Online (Sandbox Code Playgroud)

我认为这个问题应该关闭,因为它现在无效,但我不知道该怎么做。