带有 SSL 的 Falcon 服务器在一些 hours/days 后停止工作
Falcon server with SSL stops working after some hours/days
我根据 documentation 中给出的示例使用 falcon
设置了一个非常基本的 Python API 服务器。它似乎工作得很好。
现在我扩展了代码以支持使用 SSL 证书的 HTTPS 请求
import ssl
httpd = simple_server.make_server('', 8000, app)
httpd.socket = ssl.wrap_socket(
httpd.socket, server_side=True,
certfile='cert.pem',
keyfile='key.pem')
httpd.serve_forever()
再一次,它似乎工作正常,并且 HTTPS 请求的服务非常好......在开始时。
但是,一段时间后——可能是几个小时或 1-2 天(测试期间没有重负载)——服务器挂起并且不再接受任何请求。即使使用 Telnet,我也无法建立任何类型的连接。服务器脚本没有显示任何错误,并且 Ubuntu 告诉我一些进程仍在侦听此端口。
我从这里去哪里?我什至不知道如何排除故障。使用基本的 HTTP 服务器,到目前为止我还没有遇到任何问题
如以上评论所述,wsgiref
的 simple_server
并不真正适合生产。
假设您的应用程序包含在 app.py
中,并且您将 gunicorn
安装到当前的 Python(虚拟)环境中,您可以 运行 使用 TLS 作为您的应用程序:
gunicorn -b 0.0.0.0:443 --workers 8 --certfile /path/to/your/cert/cert.pem --key=/pat/to/your/cert/privkey.pem --access-logfile - app:app
(您当然应该根据应用程序的需要调整工作线程数、线程数等。)
我根据 documentation 中给出的示例使用 falcon
设置了一个非常基本的 Python API 服务器。它似乎工作得很好。
现在我扩展了代码以支持使用 SSL 证书的 HTTPS 请求
import ssl
httpd = simple_server.make_server('', 8000, app)
httpd.socket = ssl.wrap_socket(
httpd.socket, server_side=True,
certfile='cert.pem',
keyfile='key.pem')
httpd.serve_forever()
再一次,它似乎工作正常,并且 HTTPS 请求的服务非常好......在开始时。
但是,一段时间后——可能是几个小时或 1-2 天(测试期间没有重负载)——服务器挂起并且不再接受任何请求。即使使用 Telnet,我也无法建立任何类型的连接。服务器脚本没有显示任何错误,并且 Ubuntu 告诉我一些进程仍在侦听此端口。
我从这里去哪里?我什至不知道如何排除故障。使用基本的 HTTP 服务器,到目前为止我还没有遇到任何问题
如以上评论所述,wsgiref
的 simple_server
并不真正适合生产。
假设您的应用程序包含在 app.py
中,并且您将 gunicorn
安装到当前的 Python(虚拟)环境中,您可以 运行 使用 TLS 作为您的应用程序:
gunicorn -b 0.0.0.0:443 --workers 8 --certfile /path/to/your/cert/cert.pem --key=/pat/to/your/cert/privkey.pem --access-logfile - app:app
(您当然应该根据应用程序的需要调整工作线程数、线程数等。)