协程产量继续保持主力

时间:2017-07-30 13:18:43

标签: python python-2.7 coroutine nats.io

我尝试使用协程将数据发送到NATS(nats.io消息传递系统)。

当我尝试在没有参数的情况下调用此代码时,为了循环,它可以正常工作。

但是当我添加参数时, yield nc.connect 函数不会返回任何内容并继续使用main函数。

如何通过参数调用任何协程?

for i, g in df.groupby('Name'):
    globals()['df_' + str(i)] =  g

print (df_a)
  Name  A  B  C
0    a  4  7  1
1    a  5  8  3

1 个答案:

答案 0 :(得分:0)

我会尝试进一步调试您传递给服务器的端点列表是否有效。否则,如果您可以连接到服务器,那么执行此类操作应该有效。

# coding: utf-8
import tornado.ioloop
import tornado.gen
from nats.io.client import Client as NATS

@tornado.gen.coroutine
def main(events):
    print("Args:", events)
    nc = NATS()

    # Establish connection to the server.
    options = { "servers": ["nats://127.0.0.1:4222"] }
    yield nc.connect(**options)

    for e in events:
        yield nc.publish("example", "event:{}".format(e))

if __name__ == '__main__':
    events = ['1', '2', '8']
    tornado.ioloop.IOLoop.instance().run_sync(lambda: main(events))