Spec-Zone.ru › Celery

Параллельное выполнение с gevent

Введение

На главной странице gevent описывается как сетевая библиотека для Python, основанная на корутинах и использующая greenlet для предоставления высокоуровневого синхронного API поверх цикла событий libev или libuv.

Возможности:

  • Быстрый цикл событий на основе libev или libuv.

  • Лёгкие единицы выполнения на основе greenlet.

  • API, повторно использующий концепции стандартной библиотеки Python (например, события и очереди).

  • Кооперативные сокеты с поддержкой SSL

  • Кооперативные DNS-запросы, выполняемые с помощью пула потоков, dnspython или c-ares.

  • Утилита monkey patching, позволяющая сторонним модулям работать в кооперативном режиме

  • TCP/UDP/HTTP-серверы

  • Поддержка подпроцессов (через gevent.subprocess)

  • Пулы потоков

gevent создан под влиянием eventlet, но отличается более последовательным API, простой реализацией и более высокой производительностью. Узнайте, почему другие используют gevent, и ознакомьтесь со списком проектов с открытым исходным кодом на основе gevent.

Включение gevent

Вы можете включить пул gevent, используя параметр рабочего процесса celery worker -P gevent или celery worker --pool=gevent.

$ celery-Aprojworker-Pgevent-c1000

Примеры

Примеры использования поддержки Eventlet см. в каталоге примеров gevent в дистрибутиве Celery.

Известные проблемы

Известна проблема при использовании Python 3.11 и gevent. Она описана здесь и рассматривается в обсуждении gevent. Обновление до greenlet 3.0 решает эту проблему.

Copyright © 2017-2026 Asif Saif Uddin, core team & contributors. All rights reserved.
Celery is licensed under The BSD License (3 Clause, also known as the new BSD license). The license is an OSI approved Open Source license and is GPL-compatible.
https://docs.celeryq.dev/en/stable/userguide/concurrency/gevent.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API