2016-04-08 14 views
1

Der Code:Evenlet Affe Patch nicht funktioniert

import eventlet 
eventlet.monkey_patch() 
import requests 

def main(): 
    print(eventlet.patcher.is_monkey_patched(requests)) 


if __name__ == "__main__": 
    main() 

erwartete ich die Druck Aussage wahr zurückzukehren, aber in der Tat kehrte sie Falsch. Warum passiert das?

Antwort

0

Es ist wahr, Eventlet Patch requests nicht, keine Notwendigkeit zu. Es gibt nichts Besonderes in diesem Paket in Bezug auf grüne Fäden. Weil es im Grunde ein Wrapper für urllib3 ist, der eine nettere API bereitstellt. Und dann wird auch urllib3 aus demselben Grund nicht gepatcht. Wir patchen jedoch socket. requests verwendet urllib3, die socket verwendet, um TCP-Verbindungen zu erstellen und Daten zu übertragen.

Sie können die Liste der von Eventlet auf der Webseite gepatchten Module sehen http://eventlet.net/doc/patching.html#monkeypatching-the-standard-library Ab heute (2016-04-09) ist es: os, select, socket, thread, time, psycopg. Bald logging wird dieser Liste beitreten.

Ich würde glücklich sein, Ihnen mit dem tatsächlichen Problem zu helfen, dass Sie denken, is_monkey_patched ist Lösung für.

+0

Also, wenn import Anfragen = eventlet.import_patched ('Anfragen'), hat es die kumulative Wirkung von Anfragen Api Anrufe gehen grün (durch eventuell patchen Socket) haben? – conquester

+0

Ja, das ist richtig. Zwei sichere Optionen sind entweder 'monkey_patch() 'in der ersten Zeile Ihres Programms oder' import_patched '. – temoto