如何用 Python 实现通知?当用户点击开始的时候,通知其他进程执行任务 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
推荐学习书目
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
smallpython

如何用 Python 实现通知?当用户点击开始的时候,通知其他进程执行任务

  •  
  •   smallpython Sep 17, 2019 2680 views
    This topic created in 2423 days ago, the information mentioned may be changed or developed.
    现在的需求是用户控制的进程为 A

    执行任务的进程为 B

    当用户点击开始按钮的时候,进程 A 通知进程 B 要做什么什么事情.

    现在的想法是让 B 进程监听一个端口,然后 A 进程通过端口向 B 进程发送请求,B 进程接收到请求后根据请求内容执行任务.

    或者当用户点击开始的时候,A 进程将任务的信息写入数据库或者文件中,然后 B 轮询访问对应的数据库或者文件,根据文件内容执行任务.

    我的问题是有没有可能 B 进程不轮询访问这个资源,而是资源本身通知 B 进程要去做什么事情(因为考虑到 A 和 B 不在同一个机器上,也有可能网络不可达,所以不想采用第一个方案)
    12 replies    2019-09-18 09:38:48 +08:00
    jmperdev
        1
    jmperdev  
       Sep 17, 2019 via Android
    celery?
    BingoXuan
        2
    BingoXuan  
       Sep 17, 2019
    如果网络不可达,那 a,b 不就是孤立的吗?就算连接数据库也要有网络吧
    gimp
        3
    gimp  
       Sep 17, 2019
    用服务器来中转消息,websockets, mqtt 协议, 或者用各种 MQ,都能实现你的需求。
    lllllliu
        4
    lllllliu  
       Sep 17, 2019   1
    Socket 编程, 或者,最简单的一个 Pub/Sub 都可以呀。
    justseemore
        5
    justseemore  
       Sep 17, 2019
    都这么高端,不考虑队列么..
    anonymous256
        6
    anonymous256  
       Sep 17, 2019
    同一主机的话, socket 直接就可以了吧.
    不同主机的话, 一个用 websocket server 监听, 一个用 websocket client, 用户点击的时候开始通信.
    hspeed18
        7
    hspeed18  
       Sep 17, 2019
    我觉得你的问题在于基础太差
    smallpython
        8
    smallpython  
    OP
       Sep 18, 2019
    @BingoXuan 是指 A 与 B 之间无法直接通信,但是可以和第三方资源通信
    smallpython
        9
    smallpython  
    OP
       Sep 18, 2019
    @zpfhbyx 用消息队列的话,如何获取队列里的任务呢?是轮询吗?
    BingoXuan
        10
    BingoXuan  
       Sep 18, 2019
    @smallpython
    第三资源可以是什么?另外一台服务器,还是某种 api 接口?
    smallpython
        11
    smallpython  
    OP
       Sep 18, 2019
    @BingoXuan 一台服务器
    BingoXuan
        12
    BingoXuan  
       Sep 18, 2019   1
    那还是走网络通讯比较好。如果不缓存消息做异步处理的话,可以试一下 zmq。a 做 publisher,中转服务器做 subscriber 订阅 a 的消息,同时充当 publisher,b 去订阅中转服务器就可以了。这样子 a 发送消息时候,经过中转服务器后 b 就能收到消息,而且速度很快,性能消耗不大。
    About     Help     Advertise     Blog     API     FAQ     Solana     3838 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 49ms UTC 05:02 PVG 13:02 LAX 22:02 JFK 01:02
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86