【问题标题】:Avoiding message timeout in pynsq避免 pynsq 中的消息超时
【发布时间】:2018-06-30 07:08:33
【问题描述】:

例如,我通过以下方式向 NSQ 发送消息:

curl -d "test2" http://127.0.0.1:4151/pub?topic=hello

我发现如果消息处理程序的执行时间超过 100 秒,它会抛出并且该消息将超时。

ERROR:nsq.client:[127.0.0.1:4150:hello:channel]      
ERROR: ConnectionClosedError('Stream is closed',)
WARNING:nsq.reader:[127.0.0.1:4150:hello:channel] connection closed

我可以做些什么来避免这种超时?

这是我的代码:

def process_message(message):
    print(message)
    time.sleep(100)
    message.touch()
    return True

r_check = nsq.Reader(
     message_handler=process_message,
    nsqd_tcp_addresses=['127.0.0.1:4150'],
    topic='hello', channel='channel',
    lookupd_poll_interval=15,
    lookupd_connect_timeout=100000,
    lookupd_request_timeout=100000,
    max_tries=10
)

nsq.run()

谢谢。

【问题讨论】:

    标签: python nsq pynsq


    【解决方案1】:

    您应该在处理消息之前致电message.touch(),以便告诉 NSQD 您需要更多时间来处理消息。

    NSQD 中有两个参数控制消息超时:max-msg-timeout and msg-timeout

    Matt Reiferson 解释了他们的工作原理here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-07
      • 1970-01-01
      • 1970-01-01
      • 2011-08-01
      • 1970-01-01
      • 2019-04-30
      相关资源
      最近更新 更多