эвентлет на OS X? - PullRequest
       25

эвентлет на OS X?

5 голосов
/ 19 октября 2019

Я не уверен, что Eventlet работает на OS X, потому что epolls не поддерживает OS X.

Traceback (most recent call last):
  File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 917, in _bootstrap_inn
er
    self.run()
  File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/threading.py", line 865, in run
    self._target(*self._args, **self._kwargs)
  File "scraper.py", line 44, in thread_worker
    with eventlet.Timeout(60, False):
  File "/usr/local/lib/python3.7/site-packages/eventlet/timeout.py", line 55, in __init__
    self.start()
  File "/usr/local/lib/python3.7/site-packages/eventlet/timeout.py", line 66, in start
    self.timer = get_hub().schedule_call_global(
  File "/usr/local/lib/python3.7/site-packages/eventlet/hubs/__init__.py", line 117, in get_hub
    use_hub()
  File "/usr/local/lib/python3.7/site-packages/eventlet/hubs/__init__.py", line 71, in use_hub

    mod = get_default_hub()
  File "/usr/local/lib/python3.7/site-packages/eventlet/hubs/__init__.py", line 40, in get_default_hub
    return eventlet.hubs.epolls
AttributeError: module 'eventlet.hubs' has no attribute 'epolls'

1 Ответ

3 голосов
/ 03 ноября 2019

Eventlet не зависит от платформы, но его концентраторы могут быть. Концентратор epolls предназначен только для Linux и используется по умолчанию в Eventlet, но вы можете изменить его. Проверьте концентраторы Eventlet docs , чтобы выбрать правильный для вашей ситуации и позвоните eventlet.hubs.use_hub перед выполнением любого ввода-вывода.

Пример, используя независимый от платформы selects концентратор:

import eventlet
eventlet.hubs.use_hub("selects")
...