You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用--pool gevent启动Celery报错,常规启动正常问题排查

问题解决:Celery使用gevent池报错"Module 'select' has no attribute 'epoll'"

错误原因

select.epoll()是Linux/Unix系统专属的IO多路复用接口,Windows系统或部分受限环境中不存在该属性。当Celery搭配gevent池启动时,底层依赖库尝试调用epoll接口,导致加载应用失败。

解决方案

1. 针对Windows环境:强制gevent使用select替代epoll

在启动Celery前设置环境变量:

  • Windows CMD:
    set GEVENT_RESOLVER=select
    
  • Windows PowerShell:
    $env:GEVENT_RESOLVER="select"
    

之后执行原启动命令:

celery -A celery_app.tasks worker --loglevel=INFO -n my_app_worker --concurrency=4 --pool gevent

2. 通过Celery启动命令直接传递gevent参数

启动时添加--worker-option指定socket后端:

celery -A celery_app.tasks worker --loglevel=INFO -n my_app_worker --concurrency=4 --pool gevent --worker-option socket_backend=select

3. 检查并修复版本兼容性

确保Celery与gevent版本匹配(Celery 5.x推荐gevent ≥21.1.0),重新安装指定版本:

pip install celery>=5.2.0 gevent>=21.1.0

4. 替换为eventlet池(Windows环境更友好)

如果上述方案无效,可改用eventlet替代gevent:

  1. 安装eventlet:
    pip install eventlet
    
  2. 启动worker:
    celery -A celery_app.tasks worker --loglevel=INFO -n my_app_worker --concurrency=4 --pool eventlet
    

内容的提问来源于stack exchange,提问作者Nibaron Chakraborty

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 15:22:16