Was ich will, ist nur ein Ioloop in einem Thread ausführen, und schreiben Sie eine Nachricht an nsqd. Hier ist ein Versuch:Wie implementiert man einen NSQ Writer, der Nachrichten aus einer Warteschlange holen und sie schieben kann?
#!/usr/bin/env python2
# coding=utf-8
import tornado
import time
from nsq.writer import Writer
w = Writer(["bj1:4150", "bj2:4150"], reconnect_interval=15)
w.connect()
@tornado.gen.coroutine
def future_pub(topic, msg):
result = w.pub(topic, msg)
print(result)
time.sleep(3)
raise tornado.gen.Return(result)
@tornado.gen.coroutine
def main():
while True:
try:
future = future_pub("test", "message")
yield future
except Exception as e:
print(e.message)
tornado.ioloop.IOLoop.instance().run_sync(main)
Aber es hat nicht funktioniert. Kannst du mir helfen? Vielen Dank!
Ich habe bereits gelesen, dass doc. Aber es kann mein Problem nicht lösen. In der Tat möchte ich eine Sache: der Schreiber kann Nachricht aus einer Warteschlange abrufen und warten, wenn keine weitere Nachricht in der Warteschlange, aber nicht 1 Sekunde schlafen. Kannst du mir helfen? –
Der Writer ruft keine Nachrichten aus der Warteschlange ab, sondern schreibt sie * in * eine Warteschlange. Möchten Sie einen Warteschlangenleser, der jede gelesene Nachricht dann zu einem anderen Thema veröffentlicht? Aus Ihrer ursprünglichen Frage geht nicht klar hervor, was Sie erreichen möchten. – Oliver
Ja, das ist was ich will. Könnten Sie mir helfen, eine Demo zu implementieren? Danke vielmals! –