3
我知道twisted將不會「等待」......我正在使用XMPP客戶端與外部進程交換數據。我發送請求並需要獲取相應的答案。我使用sendMessage將我的請求發送到服務器。當服務器回答一個onMessage方法時,它會收到它並檢查它是否是一個請求的答案(不一定是我正在查找的那個)並將任何答案放入堆棧。 由於返回到我的sendRequest我想返回結果,所以我想從堆棧彈出對我的請求的響應並返回。 我讀過關於線程,延遲,回調和條件的知識,嘗試了很多示例,但都沒有爲我工作。所以我在這裏的示例代碼是非常精簡的僞代碼來說明我的問題。任何建議表示讚賞。Python Twisted:等待一個變量被另一個事件填充
class Foo(FooMessageProtocol):
def __init__(self, *args, **kwargs):
self.response_stack = dict()
super(Foo, self).__init__(*args, **kwargs)
def sendRequest(self, data):
self.sendMessage(id, data)
# I know that this doesn't work, just to illustrate what I would like to do:
while 1:
if self.response_stack.has_key(id):
break
return self.response_stack.pop(id)
def receiveAnswers(self, msg):
response = parse(msg)
self.response_stack[response['id']] = response
謝謝!給我自己的兩個注意事項:(1)一切都是對象,(2)RTFM至少兩次!我沒有得到關於延期的全部觀點,並感謝你的例子和我在這一點上得到的文件,並設法解決問題。謝謝! – daccle 2010-09-04 15:18:04