Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/react-native/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何获取龙卷风目标?_Python_Object_Tornado_Amazon Elastic Beanstalk - Fatal编程技术网

Python 如何获取龙卷风目标?

Python 如何获取龙卷风目标?,python,object,tornado,amazon-elastic-beanstalk,Python,Object,Tornado,Amazon Elastic Beanstalk,我想用键获取龙卷风对象的值 这是我的代码: beanstalk = beanstalkt.Client(host='host', port=port) beanstalk.connect() print("ok1") beanstalk.watch('contracts') stateTube = beanstalk.stats_tube('contracts', callback=show) print("ok2") ioloop = tornado.ioloop.IOLoop.insta

我想用键获取龙卷风对象的值

这是我的代码:

beanstalk = beanstalkt.Client(host='host', port=port)
beanstalk.connect()
print("ok1")

beanstalk.watch('contracts')
stateTube = beanstalk.stats_tube('contracts', callback=show)
print("ok2")

ioloop = tornado.ioloop.IOLoop.instance()
ioloop.start()

print("ok3")
这是函数'show()``

当我查看文档时,我发现:

当我执行此代码时,我有:

ok1
ok2
3

事实上,我得到了我想要的结果“3”,但我不明白为什么我的程序继续运行?为什么ioloop不能关闭?我没有
ok3
当我编译如何关闭ioloop并拥有
ok3

beanstalk.stats\u tube
是异步的,它返回一个
Future
,表示尚未解决的未来结果

此时,您的回调
show
将使用包含解析结果的dict执行。因此您可以定义
show
如下:

def show(stateTube):
    pprint(stateTube['current-job-ready'])

beanstalk.stats_tube('contracts', callback=show)

from tornado.ioloop import IOLoop
IOLoop.current().start()
请注意,您传递的是
show
,而不是
show()
:您传递的是函数本身,不是调用函数并传递其返回值

除了传递回调之外,解决未来问题的另一种方法是在协同路由中使用它:

from tornado import gen
from tornado.ioloop import IOLoop

@gen.coroutine
def get_stats():
    stateTube = yield beanstalk.stats_tube('contracts')
    pprint(stateTube['current-job-ready'])

loop = IOLoop.current()
loop.spawn_callback(get_stats)
loop.start()

beanstalk.stats\u tube
是异步的,它返回一个
Future
,表示尚未解析的未来结果

此时,您的回调
show
将使用包含解析结果的dict执行。因此您可以定义
show
如下:

def show(stateTube):
    pprint(stateTube['current-job-ready'])

beanstalk.stats_tube('contracts', callback=show)

from tornado.ioloop import IOLoop
IOLoop.current().start()
请注意,您传递的是
show
,而不是
show()
:您传递的是函数本身,不是调用函数并传递其返回值

除了传递回调之外,解决未来问题的另一种方法是在协同路由中使用它:

from tornado import gen
from tornado.ioloop import IOLoop

@gen.coroutine
def get_stats():
    stateTube = yield beanstalk.stats_tube('contracts')
    pprint(stateTube['current-job-ready'])

loop = IOLoop.current()
loop.spawn_callback(get_stats)
loop.start()

您有一个
未来
对象。请显示您试图呼叫的龙卷风代码this@cricket_007,我已经更新了我的帖子。你有一个
未来的
对象。请显示您试图呼叫的龙卷风代码this@cricket_007,我更新了我的帖子。我编辑了我的帖子。我试着做第一种方法,但我有一些问题…没关系,我找到了解决办法!谢谢!我在回调中发布了一个关于异常的新问题:你能帮我吗?我已经编辑了我的帖子。我试着做第一种方法,但我有一些问题…没关系,我找到了解决办法!谢谢!我在回调中发布了一个关于异常的新问题:你能帮我吗?