Actuellement, je courais un serveur errante sur Ubuntu 14.04 et je tester tous mes modules django en utilisant simple python manage.py runserver 0.0.0.0:8000
erreur mystérieuse lorsque vous utilisez le serveur django avec grequests
Depuis que je me connecte au serveur web django en utilisant le chrome par http://localhost:8000
et le serveur est en cours d'exécution sur une machine virtuelle, je suis redirection de port grâce à l'utilisation du paramètre suivant dans Vagrantfile
config.vm.network "forwarded_port", guest: 8000, host: 8000
tout fonctionne normalement (tous les modules/vues/tests fonction comme prévu), mais, depuis que je commencé à utiliser grequests
je reçois cette erreur bizarre
Exception happened during processing of request from ('10.0.2.2', 63520)
Traceback (most recent call last):
File "/home/vagrant/anaconda3/lib/python3.6/socketserver.py", line 639, in process_request_thread
self.finish_request(request, client_address)
File "/home/vagrant/anaconda3/lib/python3.6/socketserver.py", line 361, in finish_request
self.RequestHandlerClass(request, client_address, self)
File "/home/vagrant/anaconda3/lib/python3.6/socketserver.py", line 696, in __init__
self.handle()
File "/home/vagrant/anaconda3/lib/python3.6/site-packages/django/core/servers/basehttp.py", line 159, in handle
self.raw_requestline = self.rfile.readline(65537)
File "/home/vagrant/anaconda3/lib/python3.6/socket.py", line 586, in readinto
return self._sock.recv_into(b)
File "/home/vagrant/anaconda3/lib/python3.6/site-packages/gevent/_socket3.py", line 385, in recv_into
self._wait(self._read_event)
File "/home/vagrant/anaconda3/lib/python3.6/site-packages/gevent/_socket3.py", line 157, in _wait
self.hub.wait(watcher)
File "/home/vagrant/anaconda3/lib/python3.6/site-packages/gevent/hub.py", line 651, in wait
result = waiter.get()
File "/home/vagrant/anaconda3/lib/python3.6/site-packages/gevent/hub.py", line 899, in get
return self.hub.switch()
File "/home/vagrant/anaconda3/lib/python3.6/site-packages/gevent/hub.py", line 630, in switch
return RawGreenlet.switch(self)
gevent.hub.LoopExit: ('This operation would block forever', <Hub at 0x7f3b777e8af8 epoll pending=0 ref=0 fileno=34>)
Notez que je n'utilise pas grequests
et que l'importation simplement il semble provoquer cette erreur, même quand il est pas appelé ou n'importe quoi
Quelqu'un a des idées?
Bonjour, merci pour la réponse. Étant donné que grequests est utilisé dans plusieurs modules, devrais-je appeler 'monkey.patch_all()' sous chaque grequests import? De même, lancer votre propre logique de requêtes asynchrones semble un peu dur. Y at-il un défaut majeur que je ne connais pas? – AlanSTACK
Un autre suivi, pourriez-vous me diriger vers une alternative aux grequests? Je l'utilise actuellement pour gérer plusieurs appels d'API de repos en même temps (par exemple envoyer des requêtes PATCH à certaines API qui ne supportent que l'édition d'une chose à la fois) – AlanSTACK
Je ne connais pas une bonne alternative pour le moment. Vous devriez construire votre propre – karthikr