Событие Python AssertionError: Попытка повторно отправить () уже запущенное событие - PullRequest
0 голосов
/ 26 октября 2018

Я использовал следующий код для проверки, но приглашение «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.
...