2016-11-07 3 views
1

J'ai donc une application flacon qui doit fonctionner avec gunicorn --worker-class eventlet.accident de travailleur gunicorn au signal de treuil lors de l'utilisation de l'événementlet comme classe de travailleur

Mais quand je commence l'application comme celui-ci dans un volet iterm2, les accidents de travail quand je redimensionner le volet (envoyer le signal du treuil):

[2016-11-07 11:03:38 +0800] [57382] [INFO] Handling signal: winch 
[2016-11-07 11:03:38 +0800] [57385] [ERROR] Exception in worker process 
Traceback (most recent call last): 
    File "/usr/local/lib/python2.7/site-packages/gunicorn/arbiter.py", line 557, in spawn_worker 
    worker.init_process() 
    File "/usr/local/lib/python2.7/site-packages/gunicorn/workers/geventlet.py", line 96, in init_process 
    super(EventletWorker, self).init_process() 
    File "/usr/local/lib/python2.7/site-packages/gunicorn/workers/base.py", line 132, in init_process 
    self.run() 
    File "/usr/local/lib/python2.7/site-packages/gunicorn/workers/geventlet.py", line 125, in run 
    eventlet.sleep(1.0) 
    File "/usr/local/lib/python2.7/site-packages/eventlet/greenthread.py", line 34, in sleep 
    hub.switch() 
    File "/usr/local/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 294, in switch 
    return self.greenlet.switch() 
    File "/usr/local/lib/python2.7/site-packages/eventlet/hubs/hub.py", line 346, in run 
    self.wait(sleep_time) 
    File "/usr/local/lib/python2.7/site-packages/eventlet/hubs/kqueue.py", line 100, in wait 
    result = self._control([], self.MAX_EVENTS, seconds) 
    File "/usr/local/lib/python2.7/site-packages/eventlet/hubs/kqueue.py", line 43, in _control 
    return self.kqueue.control(events, max_events, timeout) 
OSError: [Errno 4] Interrupted system call 
[2016-11-07 11:03:38 +0800] [57385] [INFO] Worker exiting (pid: 57385) 
Exception TypeError: TypeError("'NoneType' object is not callable",) in <bound method Client.__del__ of <etcd.client.Client object at 0x10290a5d0>> ignored 
[2016-11-07 11:03:38 +0800] [57394] [INFO] Booting worker with pid: 57394 

Pour votre information: * Je l'utilise aussi GRPC dans mon code. * Cela ne se produit pas sur mon serveur distant centos 7, seul mon mac

Répondre

0

Exécutez ceci avant le redimensionnement.

import signal 
signal.signal(signal.SIGWINCH, signal.SIG_IGN) 

Je pense qu'il devrait être inclus dans l'initialisation gunicorn.