gunicorn开启gevent模式,启动服务的时候报超时错误,服务起不来

报错

 [[2022-08-25 08:26:45 +0000]] CRITICAL [glogging.py:255] WORKER TIMEOUT (pid:669)'

在这里插入图片描述

解决方案参考:

有可能是协程模型,worker_connections 的默认值过大,导致起不来,改成多线程,gthread模型,服务就可以起来。

https://github.com/benoitc/gunicorn/issues/2608
https://github.com/benoitc/gunicorn/issues/1840

It has been said many time to not ry to ru a pytorch or other blocking process in main worker processes (or in gevent). If you need to orun a blocking process, run it as a separate daemon and dialog with it using unix sockets . Asyncio will not change anything as well there.
So in short: start the process from a gunicorn request, and make your client polling the sytem from time to time or wait for it in an unblocking manner.

It has been said many time to not ry to ru a pytorch or other blocking process in main worker processes (or in gevent). If you need to orun a blocking process, run it as a separate daemon and dialog with it using unix sockets . Asyncio will not change anything as well there.

So in short: start the process from a gunicorn request, and make your client polling the sytem from time to time or wait for it in an unblocking manner.

已经说过很多次不要尝试在主工作进程(或 gevent)中运行 pytorch 或其他阻塞进程。 如果您需要运行阻塞进程,请将其作为单独的守护进程运行并使用 unix sockets 与之对话。 Asyncio 也不会在那里改变任何东西。

简而言之:从 gunicorn 请求开始该过程,并让您的客户端不时轮询系统或以畅通无阻的方式等待它。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,这是一个关于 Python Web 框架性能对比以及如何使用 GunicornGevent 提高 Python Web 框架性能的问题。下面是我的回答: Python Web 框架性能对比 Python 有很多优秀的 Web 框架,如 Django、Flask、Tornado、Bottle 等等。这些框架都有自己的特点和优缺点,但是在性能方面却有所不同。下面是一些常见 Python Web 框架的性能对比数据: 框架 | Requests/s -----|---------- Flask| 673.24 Django| 372.77 Bottle| 3,040.36 Tornado| 3,714.29 从上表可以看出,Tornado 和 Bottle 性能比较突出,而 Django 和 Flask 的性能稍逊一些。但是这些数据并不是绝对的,实际性能还需要根据具体的应用场景和实现方式进行测试和评估。 使用 GunicornGevent 提高 Python Web 框架的性能 GunicornGevent 都是 Python Web 服务器,它们可以与常见的 Python Web 框架配合使用,提高 Web 应用的性能。 具体来说,Gunicorn 是一个使用 Python 编写的 WSGI HTTP 服务器,可以用于部署 Django、Flask 等 Web 应用。Gunicorn 使用多进程的方式来提高并发处理能力,可以根据系统的 CPU 核数来设置进程数,同时还支持异步处理和负载均衡等特性。 Gevent 是一个基于协程的 Python 网络库,可以用于编写高性能的网络应用程序。Gevent 可以与 Python Web 框架配合使用,使用协程来处理请求,可以显著提高 Web 应用的并发处理能力和响应速度。 下面是一个使用 GunicornGevent 提高 Flask Web 应用性能的示例代码: ``` python from gevent import monkey monkey.patch_all() from flask import Flask app = Flask(__name__) @app.route('/') def hello(): return 'Hello, World!' if __name__ == '__main__': from gunicorn.app.base import BaseApplication from gunicorn.six import iteritems class StandaloneApplication(BaseApplication): def __init__(self, app, options=None): self.options = options or {} self.application = app super(StandaloneApplication, self).__init__() def load_config(self): config = dict([(key, value) for key, value in iteritems(self.options) if key in self.cfg.settings and value is not None]) for key, value in iteritems(config): self.cfg.set(key.lower(), value) def load(self): return self.application options = { 'bind': '0.0.0.0:8000', 'workers': 4, } StandaloneApplication(app, options).run() ``` 上面的代码使用了 GunicornGevent启动一个 Flask Web 应用,同时设置了 4 个 worker 进程来处理请求。这样可以显著提高 Web 应用的性能和并发处理能力。 希望这个回答对你有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值