Я использовал следующий код для проверки, но приглашение «AssertionError: Попытка повторно отправить () уже запущенное событие».ошибка, это должно быть событие, называемое посылкой несколько раз, но я не нашел, что она звонила несколько раз, я не знаю, в чем причина, но без сна (7), нет ошибкибудет сообщено. , пожалуйста, объясните мне.
import eventlet
from eventlet import Event
from eventlet import sleep
values = [1, 2, 3, 4, 5, 6]
def func(value):
sleep(1)
return value
def main():
results = []
pool = eventlet.GreenPool()
for value in values:
event = Event()
gt = pool.spawn(func, value)
gt.link(lambda res: event.send(res.wait()))
results.append(event)
sleep(7)
for result in results:
if result.ready():
print('result: %s'%result.wait())
else:
print('waiting')
if __name__ == '__main__':
main()
Сообщение об ошибке ниже
/home/greene/Github/DemoLib/venv36/bin/python /home/greene/Github/DemoLib/scrapyddemo/api.py
Traceback (most recent call last):
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/hubs/hub.py", line 460, in fire_timers
timer()
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/hubs/timer.py", line 59, in __call__
cb(*args, **kw)
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/greenthread.py", line 226, in main
self._resolve_links()
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/greenthread.py", line 237, in _resolve_links
f(self, *ca, **ckw)
File "/home/greene/Github/DemoLib/scrapyddemo/api.py", line 46, in <lambda>
gt.link(lambda res: event.send(res.wait()))
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/event.py", line 162, in send
assert self._result is NOT_USED, 'Trying to re-send() an already-triggered event.'
AssertionError: Trying to re-send() an already-triggered event.
Traceback (most recent call last):
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/hubs/hub.py", line 460, in fire_timers
timer()
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/hubs/timer.py", line 59, in __call__
cb(*args, **kw)
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/greenthread.py", line 226, in main
self._resolve_links()
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/greenthread.py", line 237, in _resolve_links
f(self, *ca, **ckw)
File "/home/greene/Github/DemoLib/scrapyddemo/api.py", line 46, in <lambda>
gt.link(lambda res: event.send(res.wait()))
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/event.py", line 162, in send
assert self._result is NOT_USED, 'Trying to re-send() an already-triggered event.'
AssertionError: Trying to re-send() an already-triggered event.
Traceback (most recent call last):
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/hubs/hub.py", line 460, in fire_timers
timer()
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/hubs/timer.py", line 59, in __call__
cb(*args, **kw)
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/greenthread.py", line 226, in main
self._resolve_links()
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/greenthread.py", line 237, in _resolve_links
f(self, *ca, **ckw)
File "/home/greene/Github/DemoLib/scrapyddemo/api.py", line 46, in <lambda>
gt.link(lambda res: event.send(res.wait()))
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/event.py", line 162, in send
assert self._result is NOT_USED, 'Trying to re-send() an already-triggered event.'
AssertionError: Trying to re-send() an already-triggered event.
Traceback (most recent call last):
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/hubs/hub.py", line 460, in fire_timers
timer()
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/hubs/timer.py", line 59, in __call__
cb(*args, **kw)
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/greenthread.py", line 226, in main
self._resolve_links()
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/greenthread.py", line 237, in _resolve_links
f(self, *ca, **ckw)
File "/home/greene/Github/DemoLib/scrapyddemo/api.py", line 46, in <lambda>
gt.link(lambda res: event.send(res.wait()))
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/event.py", line 162, in send
assert self._result is NOT_USED, 'Trying to re-send() an already-triggered event.'
AssertionError: Trying to re-send() an already-triggered event.
Traceback (most recent call last):
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/hubs/hub.py", line 460, in fire_timers
timer()
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/hubs/timer.py", line 59, in __call__
cb(*args, **kw)
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/greenthread.py", line 226, in main
self._resolve_links()
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/greenthread.py", line 237, in _resolve_links
f(self, *ca, **ckw)
File "/home/greene/Github/DemoLib/scrapyddemo/api.py", line 46, in <lambda>
gt.link(lambda res: event.send(res.wait()))
File "/home/greene/Github/DemoLib/venv36/lib/python3.6/site-packages/eventlet/event.py", line 162, in send
assert self._result is NOT_USED, 'Trying to re-send() an already-triggered event.'
AssertionError: Trying to re-send() an already-triggered event.