V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  lithbitren  ›  全部回复第 16 页 / 共 17 页
回复总数  334
1 ... 8  9  10  11  12  13  14  15  16  17  
2020-03-16 19:45:13 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
@black11black 嗯啊,是不太了解机制,只会一些应用,没有说一定要用 win10,只是碰到了问题,搜不出答案,所以拿出来讨论讨论,学习一下。
2020-03-16 19:43:40 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
@Qzier 谢谢大佬指点,qps 虽然上不去,但不会崩了。
2020-03-16 19:23:55 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
@wwqgtxx 这个方法是 Github 的 contributor 教的,最后他说 honestly I dont know 了。
2020-03-16 19:19:52 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
@wwqgtxx

按官方教程是用命令行启动 uvicorn 的,后来去了 Github 问了,考虑到要改东西,所以改成用 if main 启动了,测试过其他状态都正常,仍然是只有并发数顶死 510,就这么简单的代码,我也不晓得该咋改了。

====main.py====

from asyncio import ProactorEventLoop, get_event_loop
from uvicorn import Config, Server
from fastapi import FastAPI

app = FastAPI()

@app.get('/')
async def index_post():
ㅤreturn 'hello world'

if __name__ == "__main__":
ㅤserver = Server(
ㅤㅤconfig=Config(
ㅤㅤㅤapp=app,
ㅤㅤㅤloop=ProactorEventLoop()
ㅤㅤ)
ㅤ)
ㅤget_event_loop().run_until_complete(
ㅤㅤserver.serve()
ㅤ)
2020-03-16 15:06:47 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
@ysc3839 嗯,我也不懂怎么不用 select,可能是框架的问题,这框架我才上手一天多,源码还没下决心去看。。
2020-03-16 15:03:11 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
@ysc3839 就是并发高的时候还是主楼那个 select 错误一模一样的,没有其他错误信息。
2020-03-16 14:32:37 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
@geelaw 一开始确实是不知道,后来试过了就知道在 Python 程序里直接运行这个是没用的,还请大佬明示在哪设置可以作用到 Python 的运行上。
2020-03-16 14:26:57 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
现在的绥靖方案是 Nginx 加多进程,也可以达到每秒 qps 过千,本机服务基本可以做到全 200,fastAPI 作为 python 框架还是挺快的,其他 py 框架在 cpython 上运行很难达到这个速度。
2020-03-16 14:18:31 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
@wwqgtxx wepoll 我研究研究看看,c 我只会写算法,底层太菜了。
2020-03-16 14:12:04 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
@Mithril 手头上只有 win10,我也明白大部分服务都是为 linux 设计的,但我上 fastAPI 的官网明明也是说支持 win 的,我按照教程完整走了一遍,其他都没啥大问题,就是这个并发数在 win 上不行,我在 GitHub 的官方社区问过,contributor 也没能解决这个问题。
2020-03-16 14:09:53 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
@Trim21 不太懂,设了 ProactorEventLoop 似乎没用
2020-03-16 14:09:15 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
@wwqgtxx 这个我之前也试过了。
from asyncio import ProactorEventLoop, get_event_loop
from uvicorn import Config, Server, run
loop = ProactorEventLoop()
config = Config(app=app, loop=loop)
server = Server(config=config)
loop = get_event_loop()
loop.run_until_complete(server.serve())
没用,我的环境是 3.7,升到 3.8 有一堆库用不了,于是又降回来了,迟早要升的,不过不是现在。
2020-03-16 14:07:10 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
@geelaw 为什么不好好看一下主楼的帖子? stackoverflow 这帖子我早看了,问题是发现了,但没有可靠的解决方案,我写了 c 扩展不行,后面在 pywin32 模块里面也找到了这个函数也没用。
2020-03-15 23:06:45 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
@ClericPy 不是生产环境,就是当玩具试试而已,开 windows server 被劝退太正常了 [捂脸]
2020-03-15 22:53:02 +08:00
回复了 lithbitren 创建的主题 Python windows 下 select.select()只能打开 500 出头个文件怎么解决?
服务端的代码粘错了,函数前面少了个 async,不过测起来都是一样的。
2020-03-15 22:00:52 +08:00
回复了 onice 创建的主题 Python Python 有必要自己写类型判断吗?
type hints + mypy 可以在运行前解决绝大部分类型问题,这几年 TypeScript 火起来了,Python 也受到了不少影响,不过个人而言还是反对的,类型语言多的是,写 Python 还搞类型就是脱裤子放屁,一点都不 pythonic。
2020-03-15 21:46:54 +08:00
回复了 Cy86 创建的主题 Python Python 爬虫并发极限是多少呢?
@Cy86 外网 grequests 我这边最多也就射出秒均 200-300 这样,任何做过保护的网站都会秒封 IP,只要设了 timeout 怎么都会被短暂阻塞,我测的是自己搭的本地服务框架,算上回收处理时间是 500-700,其实应该算成服务器秒内处理请求数。单纯的看发射的话,本地的秒均单进程应该可以达到 900 多,刚刚测了 1000 个请求,服务器日志的的请求间隔是 1.1 秒这样。其实对于小服务器来说,做好保护的话最多是带宽资源占用导致其他人无法正常使用服务,但也不是这么好崩的。
2020-03-15 20:21:30 +08:00
回复了 Cy86 创建的主题 Python Python 爬虫并发极限是多少呢?
我用 grequests 单线程最快每秒可以发 500-700 个 request,还没算上多进程,一次性可以同时建立数万的个协程请求,尤其找到一些复杂点的 API,没有保护的话必崩,同事里的个人几乎都被干崩过。
不过最近遇到一次严重的内存泄漏也是因为 grequests 的 gevent 给搞得,开了 20 万个协程,等了几分钟,直接爆了个 memory error,然后可能是 c 扩展里面的内存没有释放,程序炸了,idle 关了,内存占用率都还在 95%以上,开流氓工具清内存都清不掉,最后只能重启。
2020-03-14 21:40:56 +08:00
回复了 Cy86 创建的主题 Python Python 爬虫并发极限是多少呢?
@black11black 大佬,select 锁怎么解啊?我最近试了试一个挺火的 py 新框架 fastAPI,据说 qps 能上万,结果本地拿并发爬虫一打就死了,win10 上开服务并发量不能超 510,一超就爆 select 错直接垮了,stackoverflow 和 github 都没找到解答。。
垃圾回收好像看到说用通过链表来解决不可到达区,但为什么会有残留呢?
1 ... 8  9  10  11  12  13  14  15  16  17  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   902 人在线   最高记录 6543   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 21ms · UTC 20:48 · PVG 04:48 · LAX 13:48 · JFK 16:48
Developed with CodeLauncher
♥ Do have faith in what you're doing.