트위스트가 새로 생겼고 간단한 POC를 작성하려고했지만 다음 오류가 계속 발생합니다. 나는 관련 트위스트 문서 및 가이드를 읽고 있고 내가 잘못 알아 작동하지 수twisted deferredlist를 구현하려고 할 때 이상한 동작이 발생했습니다.
running
[]
running
[]
running
[]
running
[]
running
[]
Traceback (most recent call last):
File "./poc.py", line 23, in <module>
dl = defer.DeferredList([tasks])
File "/usr/local/lib/python2.7/site-packages/twisted/internet/defer.py", line 820, in __init__
deferred.addCallbacks(self._cbDeferred, self._cbDeferred,
AttributeError: 'list' object has no attribute 'addCallbacks'
. 아무도이 예외의 원인을 알고 있습니까?
#!/usr/bin/env python
from twisted.internet import defer
def task_to_run(data):
print 'running'
print data
def finished(res):
print 'finished', res
tasks = []
for x in range(0,5):
d = defer.Deferred()
d.addCallback(task_to_run)
tasks.append(d)
dl = defer.DeferredList([tasks])
dl.addCallback(finished)
BTW, 'task_to_run'이 비동기 적이 지 않은 것으로 의심되는 이유는 태스크의 비동기 출력이 ** 예외 ** 이후에 올 것이기 때문입니다. 현재 코드를 실행할 때 예외 이전에 완료된 작업을 표시하면 'DeferredList'가 도움이되지 않습니다 (IE에서 [지연 코드]는 수행하지 않음) (http://twistedmatrix.com/documents/12.3 .0/core/howto/gendefer.html # auto2) 트랩. –