V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  todd7zhang  ›  全部回复第 2 页 / 共 4 页
回复总数  70
1  2  3  4  
@chroming 难道不是并发多一倍而已嘛?之前业务逻辑响应要 30ms,改成异步就能 15ms 了?
2021-03-03 16:47:09 +08:00
回复了 RandomAccess 创建的主题 Python 关于 Python asyncio StreamReader 读取的疑惑
tcp 是一个流嘛, 如果你客户端的 tcp 不主动告诉服务端我的数据全部发完了,那么服务端就不会认为这个 socket eof.
所以你需要在客户端 socket 数据发完之后,sock.shutdown(1) 告诉服务端,这边数据发送完毕。
@LeeReamond 这就不可能了吧,tcp 协议是控制了的,接收方收到的数据是肯定不会乱序的。

我猜测你说的这种情况最可能是

本意为了发送 102400 & 102400*i 和 102400 & 102400*j,
但是你客户端发送的代码没有写好导致服务端收到 102400 & 102300*i 和 102400 & 102400*j 。
这种情况可能就是你每次发送用的 socket.send 而不是 socket.sendall,sendall 是会多次调用 send 确保数据完全发完的
@LeeReamond 没看到你的长链接要求,这里我写了一个 https://paste.ubuntu.com/p/qcVf2rYZYM/
@LeeReamond 你就可以用我上面的代码啊,每次请求都是[header][body],这样才能处理好两次请求体的边界问题嘛

server.py 在 print("Got data %s" % b''.join(res)) 和 sock.sendall(b'Got it %d' % len(b''.join(res))) 中间插入你的 server 处理业务逻辑就行。

client.py 中:s.connect(('localhost', 20080)) 和 s.shutdown(1) 中间是发送一次请求,多次就在中间插入就行了
然后,我还测试了一下
rfile = makefile('rb', -1)
rfile.read(min((length, 4096)))
读取 body 的时候,每次都会阻塞的返回 4096 长度的 bytes, 除非最后的数据<4096 。
socket.recv 不是
@fengjianxinghun 谢谢。所以这个意思是,除非异常或者客户 client close 了,recv(n) 通常都是返回 n bytes 大小的数据吗
@GM 文档 socket.recv(bufsize[, flags]) Receive data from the socket. The return value is a bytes object representing the data received. The maximum amount of data to be received at once is specified by bufsize. See the Unix manual page recv(2) for the meaning of the optional argument flags; it defaults to zero. 因为这里只是说返回数据最大不超过 bufsize, 所以我也不知道到底是不是明确返回 bufsize 大小呀
子线程处理逻辑,中间可能会有异常,然后子线程发事件给 manager,然后让 manager 来结束这个子线程?
如果是这样的话,为啥不是子线程中间出错了,自己退出不就行了?
2021-02-20 10:02:54 +08:00
回复了 xiaokuonai 创建的主题 程序员 实时公交 api
2021-02-18 17:03:06 +08:00
回复了 abersheeran 创建的主题 Python 快速暴露 Python 函数作为 HTTP 服务
2.7 老古董看到 typing 脑壳昏, 是不是应该学一学这个 typing 了
2021-02-05 09:20:40 +08:00
回复了 WilliamHL 创建的主题 Python 如何优化 Python 计算超大字典的问题
只能猜是你的 longtext 处理的时候造出太多的新的 str 了
2021-02-03 17:36:35 +08:00
回复了 18870715400 创建的主题 Python 关于多进程切换的问题
倒不如考虑下,查询的 SQL 是不是和其他进程的 SQL 阻塞了?
所以你单独跑上传的进程很快,但是所有进程一起就不行。
2021-01-22 15:49:11 +08:00
回复了 hanssx 创建的主题 Python "a == b" 与"id(a) == id(b)"的本质区别
学到了
2021-01-22 15:34:23 +08:00
回复了 hanssx 创建的主题 Python "a == b" 与"id(a) == id(b)"的本质区别
不知道,盲猜 id 相等是因为
p1.say.im_func is p2.say.im_func
python3 就是 p1.say.__func__ is p2.say.__func__
2021-01-18 17:32:40 +08:00
回复了 deplives 创建的主题 Python 请问一个 Python Socket 的问题
约定发 [length][body], 定死 length 占用几个字节就好了!世上哪有粘包,拆包
2021-01-12 17:34:23 +08:00
回复了 PowerRocker 创建的主题 Django 求教 Django(DRF)日志最佳实践
1. python 代码里面只用 logging.StreamHandler(),
2. supervisor 启动 django,同时配置 stdout_logfile=/log/log.log redirect_stderr=true,
3. logrotate 按天分割 /log/log.log 文件
2021-01-07 16:00:08 +08:00
回复了 diwuqin 创建的主题 Python 如何使用便利字典后的 index 做为列表名称创建列表呢
k = 'test'
globals()[k] = []

test.append(3)

不建议这么玩,哈哈
2021-01-05 10:59:56 +08:00
回复了 shenwu35 创建的主题 程序员 工作 8 年手写不出反转链表是不是进不了 bat 了?
筛选链表的题, 从简单一路刷一下去,手熟就秒出
1  2  3  4  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3046 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 28ms · UTC 00:43 · PVG 08:43 · LAX 16:43 · JFK 19:43
Developed with CodeLauncher
♥ Do have faith in what you're doing.