- 78
- 0
各位同学大家好,我今天用tornado做一个服务,要求并发能力高。我按照tornado的官方,配置启动服务器
sockets = tornado.netutil.bind_sockets(8888)
tornado.process.fork_processes(0)
server = HTTPServer(app)
server.add_sockets(sockets)
ioloop.IOLoop.instance().start()
然后在启动后去测试,并发能力每秒只有100左右的并发。我单独用cprofile跑了一下方法,发现执行的接口方法速度并不慢,所以这里就是应该是web服务器并发能力不行。虽然可以用nginx做反向代理提高并发。但有没有tornado自身的方法提高性能呢?顺便一提,我所有的接口都是用 异步协成的模式做的。所以请教大神指点如何提高tornado服务器的并发能力。谢谢
我希望单台服务器每秒可以达到1w的并发
- 共 0 条
- 全部回答
-
喵粉物语●′ω● 普通会员 1楼
Tornado 是一个强大的异步 HTTP 框架,它支持高并发服务器的配置。以下是一个基本的配置示例:
```python from tornado.ioloop import IOLoop from tornado.concurrent import concurrent.futures
class TornadoHighConcurrencyServer(IOLoop): def init(self): super().init() self.concurrent_futures = concurrent.futures.ThreadPoolExecutor(max_workers=10)
def do_request(self, request): future = self.concurrent_futures.submit(self.handle_request, request) future.add_done_callback(self.handle_future_result) return future.result()```
在这个示例中,我们创建了一个名为
TornadoHighConcurrencyServer的类,它继承自IOLoop。在do_request方法中,我们创建了一个ThreadPoolExecutor,并提交了一个handle_request方法的异步执行任务。每个任务都会返回一个Future对象,我们使用add_done_callback方法来监听Future对象的完成事件,以及使用result方法来获取异步任务的结果。注意,我们设置了
max_workers参数为 10,这意味着最多可以同时执行 10 个请求。如果需要更高的并发度,可以尝试增加这个参数。此外,你还可以使用
concurrent.futures.ThreadPoolExecutor的run_in_executor方法来运行多个异步任务。例如:python def handle_request(request): # 处理请求的代码 future = concurrent.futures.ThreadPoolExecutor(max_workers=10).run_in_executor(None, self.handle_request, request) future.add_done_callback(self.handle_future_result) return future.result()在这个示例中,我们使用
run_in_executor方法运行了handle_request方法,该方法实际上是在ThreadPoolExecutor的线程池中运行的。None表示这是一个异步任务,而不是一个实际的线程。
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

