alibaba / alibaba/acm-sdk-python

watcher with gevent will throw BlockingIOError:

Offen
#11 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
Python
Sterne
59
Forks
26
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

bug recurrence:
acm watcher script with code
"from gevent import monkey; monkey.patch_all()" or
gunicorn start service with "-k gevent"

Traceback (most recent call last):
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/arbiter.py", line 583, in spawn_worker
worker.init_process()
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/workers/gthread.py", line 104, in init_process
super(ThreadWorker, self).init_process()
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/workers/base.py", line 129, in init_process
self.load_wsgi()
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/workers/base.py", line 138, in load_wsgi
self.wsgi = self.app.wsgi()
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/app/base.py", line 67, in wsgi
self.callable = self.load()
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 52, in load
return self.load_wsgiapp()
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/app/wsgiapp.py", line 41, in load_wsgiapp
return util.import_app(self.app_uri)
File "/root/anaconda3/lib/python3.6/site-packages/gunicorn/util.py", line 350, in import_app
__import__(module)
File "xxxxxxxxx", line 32, in
xxxxxxxxxxxx
File "xxxxxxxxx", line 12, in __init__
self.client.add_watcher(xxxxxxxxxxx)
File "/root/anaconda3/lib/python3.6/site-packages/acm/commons.py", line 10, in synced_func
return func(*args, **kws)
File "/root/anaconda3/lib/python3.6/site-packages/acm/client.py", line 557, in add_watcher
self.add_watchers(data_id, group, [cb])
File "/root/anaconda3/lib/python3.6/site-packages/acm/commons.py", line 10, in synced_func
return func(*args, **kws)
File "/root/anaconda3/lib/python3.6/site-packages/acm/client.py", line 602, in add_watchers
key_list = self.process_mgr.list()
File "/root/anaconda3/lib/python3.6/multiprocessing/managers.py", line 662, in temp
token, exp = self._create(typeid, *args, **kwds)
File "/root/anaconda3/lib/python3.6/multiprocessing/managers.py", line 554, in _create
conn = self._Client(self._address, authkey=self._authkey)
File "/root/anaconda3/lib/python3.6/multiprocessing/connection.py", line 493, in Client
answer_challenge(c, authkey)
File "/root/anaconda3/lib/python3.6/multiprocessing/connection.py", line 732, in answer_challenge
message = connection.recv_bytes(256) # reject large message
File "/root/anaconda3/lib/python3.6/multiprocessing/connection.py", line 216, in recv_bytes
buf = self._recv_bytes(maxlength)
File "/root/anaconda3/lib/python3.6/multiprocessing/connection.py", line 407, in _recv_bytes
buf = self._recv(4)
File "/root/anaconda3/lib/python3.6/multiprocessing/connection.py", line 379, in _recv
chunk = read(handle, remaining)
BlockingIOError: [Errno 11] Resource temporarily unavailable

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Beginne in acm/client.py bei add_watcher/add_watchers, insbesondere beim im Traceback gezeigten Aufruf process_mgr.list(), und überprüfe acm/commons.py im Bereich des Synchronisierungs-Wrappers. Reproduziere die Einrichtung des Watchers mit gevent monkey.patch_all() oder Gunicorns gevent-Worker und verfolge anschließend die Interaktion mit dem multiprocessing-Manager. Erledigt ist die Aufgabe, wenn der gemeldete Start des Watchers nicht mehr BlockingIOError auslöst.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
python
Bereich
backend
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Muss geklärt werden
Anfängerfreundlichkeit
30/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.