Предотвратить переключение greenthread в eventlet
У меня есть приложение Django/Tastypie, где я все исправил с помощью eventlet.
Я проанализировал производительность во время нагрузочных тестов, используя при этом как рабочий, так и синхронизирующий оператор для gunicorn. Я проверил на работниках синхронизации, чтобы исключить последствия ожидания переключения других зеленых потоков, и обнаружил, что вызовы memcached в моем коде регулирования занимают только около 1 мс самостоятельно. Вместо того, чтобы переключаться на другую зеленую ветвь во время ожидания ответа в 1 мс, я бы просто заблокировал в этой точке. Есть ли какой-нибудь способ сказать eventlet не переключаться на другой greenthread? Может быть, менеджер контекста или что-то?
1 ответ
Нет такого менеджера контекста, хотя вы можете внести свой вклад.
Вы все исправили обезьяны, но вы не хотите исправления обезьяны socket
в клиенте memcache. Ваши варианты:
- обезьяна патч все, кроме
socket
, затемpatcher.import_patched
конкретные модули. Это будет очень сложно с Джанго /Tastypie. - измените ваш клиент memcache для использования
eventlet.patcher.original('socket')