首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pykka:当参与者的挂起消息队列停止时,如何取消它

Pykka:当参与者的挂起消息队列停止时,如何取消它
EN

Stack Overflow用户
提问于 2015-01-23 15:52:08
回答 1查看 498关注 0票数 1

我已经和皮卡演员库玩过了,我想出了下面这个可怕的愚蠢的例子:

代码语言:javascript
复制
import pykka
from time import sleep

class TestActor(pykka.ThreadingActor):
    def on_receive(self, message):
        sleep(1)
        print(message["v"])    

a = TestActor.start()
for i in xrange(10):
    print("asking for " + str(i))
    a.tell({"v":i})
print(a.stop())

我得到了预期的结果: 10行要求立即打印,另外10行在1秒钟内打印:

代码语言:javascript
复制
asking for 0
asking for 1
asking for 2
asking for 3
asking for 4
asking for 5
asking for 6
asking for 7
asking for 8
asking for 9
0
1
2
3
4
5
6
7
8
9
True

在参与者处理完所有请求之后,True将作为stop操作的结果进行打印。

,我想知道是否有可能停止演员,从而取消对请求消息的接收和处理.

我查了图书馆的文件,但我所能找到的只有block停止参数,这意味着完全不同的事情:当设置为False时,它使调用是异步的,但是它有关消息队列的行为是相同的:

stop(block=True,timeout=None) 给演员发一条信息,让它停下来。 如果参与者在调用时停止或正在停止,则返回True。假使演员已经死了。如果块为False,则返回一个封装结果的未来。 在参与者被要求停止之前发送给参与者的消息将在停止之前被正常处理。 在参与者被要求停止后发送给参与者的消息将在参与者停止后用pykka.ActorDeadError回复。 演员可能不会重新开始。 块和超时对于ask()起作用。 返回: pykka.Future,如果阻塞,则返回布尔结果

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-02-16 18:35:43

Pykka目前(1.2.0)不支持中断消息队列。

来源:https://github.com/jodal/pykka/issues/46

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28113660

复制
相关文章

相似问题

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