第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

為什么 ZeroMQ 輪詢器不接收消息(python)?

為什么 ZeroMQ 輪詢器不接收消息(python)?

SMILET 2024-01-27 14:39:46
我正在嘗試在 python 中使用Poller()帶有兩個(gè)套接字的 ZeroMQ 功能:import zmq# Prepare our context and socketscontext = zmq.Context()receiver = context.socket(zmq.DEALER)receiver.connect("ipc:///tmp/interface-transducer")subscriber = context.socket(zmq.SUB)subscriber.bind("ipc:///tmp/fast-service")subscriber.setsockopt(zmq.SUBSCRIBE, b"10001")# Initialize poll setpoller = zmq.Poller()poller.register(receiver, zmq.POLLIN)poller.register(subscriber, zmq.POLLIN)# Process messages from both socketswhile True:    try:        socks = dict(poller.poll())    except KeyboardInterrupt:        break    if receiver in socks:        message = receiver.recv()        print("RECEIVER OK\n")    if subscriber in socks:        message = subscriber.recv()        print("SUBSCRIBER OK\n")然后發(fā)送消息的服務(wù)器ROUTER描述為:def main():    context = zmq.Context()    router = context.socket(zmq.ROUTER)    router.bind("ipc:///tmp/interface-transducer")    while True:        identity = b'electrode-service'        b_identity = identity        router.send_multipart([b_identity, b'[1,2]'])        print("Sent")        time.sleep(1)if __name__ == "__main__":    main()但是當(dāng)我運(yùn)行這兩個(gè)進(jìn)程時(shí),它沒有按預(yù)期工作,輪詢器腳本不會(huì)打印任何內(nèi)容。這樣的實(shí)施可能會(huì)出現(xiàn)什么問題?
查看完整描述

1 回答

?
蕭十郎

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊

“這樣的實(shí)施可能會(huì)出現(xiàn)什么問題?”

  • .poll()由于僅使用&.recv()方法的阻塞形式,這種實(shí)現(xiàn)很容易出現(xiàn)死鎖并失敗

  • 在多個(gè)對(duì)等點(diǎn)連接到實(shí)現(xiàn)循環(huán)傳入/傳出流量映射的接入點(diǎn)的情況下,這種實(shí)現(xiàn)的自我防御能力不夠

  • .recv()這種實(shí)現(xiàn)方式是非常錯(cuò)誤的,因?yàn)樵谶@種情況下,只調(diào)用一個(gè)單獨(dú)的代碼.send_multipart()是非常錯(cuò)誤的,在這種情況下,會(huì)發(fā)出驚人的警告,需要進(jìn)行多部分消息處理

  • ipc://Transport Class 很容易隱藏與操作系統(tǒng)相關(guān)的用戶級(jí)代碼限制(由操作系統(tǒng)對(duì)路徑名的格式和長度以及對(duì) R/W/X 的有效用戶權(quán)限進(jìn)行設(shè)置)

  • ipc://對(duì)于 O/S 服務(wù)尚未創(chuàng)建目標(biāo)地址的情況,傳輸類.connect()方法的使用取決于順序(.bind()需要首先成功)

  • 最后但并非最不重要的一點(diǎn)是,任何.bind()對(duì)同一ipc://傳輸類目標(biāo)的下一次嘗試都會(huì)默默地破壞您ROUTER對(duì)消息傳遞/信令平面基礎(chǔ)設(shè)施的預(yù)期訪問,并且您的實(shí)現(xiàn)已經(jīng)花費(fèi)了零努力來自我保護(hù)和自我診斷錯(cuò)誤,這些錯(cuò)誤可能會(huì)默默地發(fā)生出現(xiàn)在“幕后”

Zeromq 不應(yīng)該自動(dòng)處理死鎖嗎?我嘗試使用zeromq指南mspoller中給出的示例如果我不能同時(shí)使用.poll()和recv(),我應(yīng)該如何使用ZMQ Poller結(jié)構(gòu)?– hao123

,
ZeroMQ zen-of-zero 注重性能+低延遲,因此請(qǐng)考慮將預(yù)防阻塞的所有應(yīng)有注意都掌握在您自己的手中(根據(jù)需要和需要的地方,核心庫永遠(yuǎn)不會(huì)比實(shí)現(xiàn)幾乎線性可擴(kuò)展性能的目標(biāo)所需的)。

不,
自由使用.poll()- 和 -.recv()方法,但完成它以適應(yīng)非阻塞方式 -.poll( 0 )并添加主動(dòng)檢測(cè)+多部分消息的處理(再次,最好以非阻塞方式,使用zmq.NOBLOCK選項(xiàng)標(biāo)志,其中合適的 )。自阻塞會(huì)使代碼失控。


查看完整回答
反對(duì) 回復(fù) 2024-01-27
  • 1 回答
  • 0 關(guān)注
  • 212 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)