首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >玉米产量继续以主产为主

玉米产量继续以主产为主
EN

Stack Overflow用户
提问于 2017-07-30 13:18:43
回答 1查看 121关注 0票数 0

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

当我试图不带参数地调用这段代码时,对于循环,它工作得很好。

但是,当我添加参数时,产生的nc.connect函数不会返回任何内容并继续主函数。

我怎么能称任何有争论的协同线?

代码语言:javascript
复制
@tornado.gen.coroutine
def process_events_list(events):  
    try: 
        nc = NATS()
        parser = SafeConfigParser()
        conf = os.path.realpath(
        os.path.join(os.getcwd(),'ev_nats\\ev_nats.ini'))
        parser.read(conf)
        endpoints = ast.literal_eval(parser.get('Nats', 'Servers'))
        subject = parser.get('Nats', 'Subject')
        opts = {"servers": endpoints}
        **yield nc.connect(**opts)**  # wont connect return to main        
        for ev in events:
            yield nc.publish(subject, ev)
        yield nc.flush()
        log("Published")
    except Exception, e:
        log(e)

if __name__=='__main__': # if run directly, not called by event_dispatcher.py
   evt = ['1','2','3']
   tornado.ioloop.IOLoop.instance().run_sync(lambda : process_events_list(evt))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-07-31 10:15:13

我将进一步调试要传递给服务器的端点列表是否有效。否则,如果您可以连接到服务器,就应该这样做。

代码语言:javascript
复制
# 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))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45400234

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档