Предотвратить переключение greenthread в eventlet

У меня есть приложение Django/Tastypie, где я все исправил с помощью eventlet.

Я проанализировал производительность во время нагрузочных тестов, используя при этом как рабочий, так и синхронизирующий оператор для gunicorn. Я проверил на работниках синхронизации, чтобы исключить последствия ожидания переключения других зеленых потоков, и обнаружил, что вызовы memcached в моем коде регулирования занимают только около 1 мс самостоятельно. Вместо того, чтобы переключаться на другую зеленую ветвь во время ожидания ответа в 1 мс, я бы просто заблокировал в этой точке. Есть ли какой-нибудь способ сказать eventlet не переключаться на другой greenthread? Может быть, менеджер контекста или что-то?

1 ответ

Решение

Нет такого менеджера контекста, хотя вы можете внести свой вклад.

Вы все исправили обезьяны, но вы не хотите исправления обезьяны socket в клиенте memcache. Ваши варианты:

  • обезьяна патч все, кроме socket, затем patcher.import_patched конкретные модули. Это будет очень сложно с Джанго /Tastypie.
  • измените ваш клиент memcache для использования eventlet.patcher.original('socket')
Другие вопросы по тегам