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
whatsupbitch
V2EX  ›  Python

在做一个 pos 系统,订单实时通知如何处理?

  •  
  •   whatsupbitch · 65 天前 · 1793 次点击
    这是一个创建于 65 天前的主题,其中的信息可能已经有所发展或是发生改变。
    目前想到的是 轮询? websocket ? see? 各有利弊
    不知道业界通用的方案是什么。
    服务端使用 Django 开发。
    客户端使用 Flutter ,用于 Android Pad 和 iPad 。
    13 条回复    2024-07-04 15:43:12 +08:00
    zxkxhnqwe123
        1
    zxkxhnqwe123  
       65 天前
    任务系统
    keakon
        2
    keakon  
       65 天前
    友情提醒,最好换个框架,不然每秒几十个订单可能就扛不住了。

    然后通知是什么场景呢?用户刷卡时,pos 机发到 server 端,处理完通知么?这个不是秒级就完成了么,还需要轮询?
    linhua
        3
    linhua  
       65 天前
    非 web 端 mqtt ,web 端 mqtt+websocket
    或者其他 pub/sub 模型的 比如 redis stream ,redis stream 是 at-least-once
    whatsupbitch
        4
    whatsupbitch  
    OP
       65 天前
    @zxkxhnqwe123 celery + websocket?
    whatsupbitch
        5
    whatsupbitch  
    OP
       65 天前
    @keakon 谢谢,描述错误了,是收银系统。小程序或者点餐完成后,通知系统打印小票。开始用户不会太多,想先快速实现。后期用户多了准备用.net 把面 c 端的重构一下。
    whatsupbitch
        6
    whatsupbitch  
    OP
       65 天前
    @linhua 谢谢,研究研究。
    xiaocaiji111
        7
    xiaocaiji111  
       65 天前
    websocket ,我之前做新零售,这么搞得。现在近 3 万家门店用,没得遇到特别得问题。
    julyclyde
        8
    julyclyde  
       65 天前   ❤️ 2
    这种低频应用,随便写写就好了
    你系统处理能力再快,瓶颈也都在食客和厨房,而不是在 POS
    tomczhen
        9
    tomczhen  
       65 天前
    纯看 Web 处理能力,正常部署 Django 跑个 3000qps 没啥问题啊,怎么能得到每秒几十个订单就扛不住的结论?
    samnya
        10
    samnya  
       65 天前
    小系统轮询简单啊,websocket 需要处理断开重连,重连期间错过了消息也要主动去获取。或者直接 socket.io 之类的方案
    janus77
        11
    janus77  
       65 天前
    丢 redis 事件消费呗
    imokkkk
        12
    imokkkk  
       65 天前
    看实时性要求高不高,不高的话定时轮询就行,否则就 websocket ,但复杂很多
    ytll21
        13
    ytll21  
       65 天前
    @whatsupbitch #5 小程序或者点餐完成后,通知系统打印小票。
    --------------------------------------------
    为什么需要通知系统?待打印的订单都在数据库中,系统每 1 秒查询下数据库中未打印的订单,拉出来打印就行了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1181 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 23:56 · PVG 07:56 · LAX 16:56 · JFK 19:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.