V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
lanshee
V2EX  ›  Python

python3 有没有办法将 socket 对象存入 redis 中?

  •  2
     
  •   lanshee · 2019-06-15 16:54:00 +08:00 · 4556 次点击
    这是一个创建于 1981 天前的主题,其中的信息可能已经有所发展或是发生改变。
    第 1 条附言  ·  2019-06-15 18:37:48 +08:00
    楼下各位大佬说的没错,socket 无法序列化,我想存 redis 中其实也就是仅仅想存起来而已,因为后续要用,想让两个 socket 服务通过 socket 对象关联起来.相当于转发一样的功能: client1 <--> socketserver1 <-->socketserver2 <--> client2.
    总需求是这样,client1 <--> socketserver[或者 proxy(socket 实现的)] <--> client2
    第 2 条附言  ·  2019-06-15 18:39:54 +08:00
    这个标题起的比较 2B...
    17 条回复    2019-06-16 15:40:45 +08:00
    airborne007
        1
    airborne007  
       2019-06-15 17:50:24 +08:00
    pickle 处理下?
    welkinzh
        2
    welkinzh  
       2019-06-15 18:00:58 +08:00
    需要转一下格式吧, 而且直接存 socket, 看起来就很奇怪
    dingyaguang117
        3
    dingyaguang117  
       2019-06-15 18:01:48 +08:00
    请问连接怎么存。。
    crysislinux
        4
    crysislinux  
       2019-06-15 18:02:07 +08:00 via Android
    你能序列化 socket 么。
    kaneg
        5
    kaneg  
       2019-06-15 18:31:48 +08:00 via iPhone   ❤️ 5
    socket 是不可序列化的,因为它是表示网络双方连接的一种抽象对象,连接双方的状态是与时间高度相关,而序列化则是一种试图固化对象状态的操作,所以二者是矛盾的,是毫无意义的。
    lanshee
        6
    lanshee  
    OP
       2019-06-15 18:38:14 +08:00
    @kaneg 大佬说的一点毛病都没有.难顶难顶.
    wspsxing
        7
    wspsxing  
       2019-06-15 19:04:49 +08:00 via Android
    人才
    BBCCBB
        8
    BBCCBB  
       2019-06-15 19:07:13 +08:00
    存到 redis 里也不可能重用的!!!
    love
        9
    love  
       2019-06-15 20:53:56 +08:00
    人才啊,我 socket 存数据库里,岂不是可以实现无限连接
    rrfeng
        10
    rrfeng  
       2019-06-15 20:55:10 +08:00 via Android   ❤️ 1
    我猜 lz 想存的是 session
    cz5424
        11
    cz5424  
       2019-06-15 20:58:57 +08:00 via iPhone
    把收到的信息存起来,建立下一个链接发出去了也是转发
    billlee
        12
    billlee  
       2019-06-15 20:59:00 +08:00   ❤️ 10
    刻舟求剑
    masker
        13
    masker  
       2019-06-15 21:04:11 +08:00 via Android
    楼上的刻舟求剑说得好啊
    opengps
        14
    opengps  
       2019-06-15 23:19:52 +08:00 via Android
    由于不懂 py,说说.net 下~ socket 存 list,Redis 存链接信息方便取用
    feather12315
        15
    feather12315  
       2019-06-15 23:20:44 +08:00 via Android
    criu 了解一下
    sazima
        16
    sazima  
       2019-06-15 23:47:39 +08:00
    我以前做过类似的, 存储了了 sqlalchemy 的查询结果比如 user, 但是使用 redis 取出来 user, 进一步查询: user.roles.all() 就查不到数据了.
    BingoXuan
        17
    BingoXuan  
       2019-06-16 15:40:45 +08:00 via Android
    你可以用 c 实现一个以 fileno 标识 socket 的库,然后存 fileno 到 Redis 里面
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   982 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 22:55 · PVG 06:55 · LAX 14:55 · JFK 17:55
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.