На работе мы используем gevent для создания нескольких асинхронных серверов, и есть некоторые споры о том, когда выполнять исправление обезьян по отношению к другим модулям. Документация gevent показывает такие вещи:
from gevent import monkey
monkey.patch_socket()
import socket
Где исправление обезьяны происходит до того, как модули библиотеки были импортированы.
Тем не менее, мой менеджер считает, что порядок исправления обезьян должен быть таким:
import socket
from gevent import monkey
monkey.patch_socket()
Когда исправление обезьяны вызывается после импорта библиотечного модуля. Это выглядит так, как будто обезьяна исправление видит, что модуль сокета был импортирован, и исправляет его в этот момент.
Я нашел несколько дискуссий, в которых говорится, что нужно делать это одним способом, а в других — другим. Мое собственное простое тестирование, кажется, говорит, что это не имеет значения. Есть ли у кого-нибудь мнение по этому поводу с некоторыми четкими причинами или ссылками, в которых говорится, почему?
Заранее спасибо!! Дуг