centos6u3 安装 celery 总结
耗时大概6小时.
执行 pip install celery 之后, 在 mac 上 celery 可以正常运行, 在 centos 6u3 上报错如下:
Traceback (most recent call last):
File "/home/work/collie/venv/bin/celery", line 11, in <module>
sys.exit(main())
File "/home/work/collie/venv/lib/python2.7/site-packages/celery/__main__.py", line 13, in main
from celery.bin.celery import main as _main
File "/home/work/collie/venv/lib/python2.7/site-packages/celery/bin/__init__.py", line 2, in <module>
from .base import Option
File "/home/work/collie/venv/lib/python2.7/site-packages/celery/bin/base.py", line 17, in <module>
from celery import VERSION_BANNER, Celery, maybe_patch_concurrency
File "/home/work/collie/venv/lib/python2.7/site-packages/celery/local.py", line 509, in __getattr__
module = __import__(self._object_origins[name], None, None, [name])
File "/home/work/collie/venv/lib/python2.7/site-packages/celery/app/__init__.py", line 5, in <module>
from celery import _state
File "/home/work/collie/venv/lib/python2.7/site-packages/celery/_state.py", line 15, in <module>
from celery.utils.threads import LocalStack
File "/home/work/collie/venv/lib/python2.7/site-packages/celery/utils/__init__.py", line 10, in <module>
from .nodenames import worker_direct, nodename, nodesplit
File "/home/work/collie/venv/lib/python2.7/site-packages/celery/utils/nodenames.py", line 7, in <module>
from kombu.entity import Exchange, Queue
File "/home/work/collie/venv/lib/python2.7/site-packages/kombu/entity.py", line 6, in <module>
from .abstract import MaybeChannelBound, Object
File "/home/work/collie/venv/lib/python2.7/site-packages/kombu/abstract.py", line 6, in <module>
from .connection import maybe_channel
File "/home/work/collie/venv/lib/python2.7/site-packages/kombu/connection.py", line 15, in <module>
from kombu import exceptions
File "/home/work/collie/venv/lib/python2.7/site-packages/kombu/exceptions.py", line 6, in <module>
from amqp import ChannelError, ConnectionError, ResourceError
File "/home/work/collie/venv/lib/python2.7/site-packages/amqp/__init__.py", line 47, in <module>
from .connection import Connection # noqa
File "/home/work/collie/venv/lib/python2.7/site-packages/amqp/connection.py", line 29, in <module>
from . import spec
ImportError: cannot import name spec
遇到这个问题时, 心态不好, 没有深入的分析问题, 而是寻求在生产环境服务器上复现与 mac 一样的环境, 以求问题可以自己解决.
最开始以为是 rabbitMQ 没有安装导致, 转而寻求安装 rabbitMQ, 生产环境 10KB 的下载速度, 浪费了很多时间.
然后怀疑是 virtualenv 的问题, 然后在另一台服务器上采用绝对路径安装了 python 2.7.12, pip 之后发现问题依旧.
进一步怀疑是 pip 下载的文件有损, 开始手动下载相关包文件安装, 问题依旧.
最后回到报错的信息, 模块加载失败, 进入到 amqp 包文件目录, 解释器下加载 spec, 没有报警.
执行 from .connection import Connection, 报错信息如下:
>>> from connection import Connection
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "connection.py", line 26, in <module>
from vine import ensure_promise
File "/usr/local/lib/python2.7/site-packages/vine/__init__.py", line 8, in <module>
from .abstract import Thenable
File "/usr/local/lib/python2.7/site-packages/vine/abstract.py", line 8, in <module>
from .five import with_metaclass
File "/usr/local/lib/python2.7/site-packages/vine/five.py", line 67, in <module>
import platform
File "platform.py", line 16, in <module>
int, platform.release().split('-')[0].split('.')))
AttributeError: 'module' object has no attribute 'release'
报错 platform 没有 release 方法, 这个是不对的, platform 是有这个方法的.
发现原因, amqp 2.1.2 版本之后, 增加了 platform.py 的同名文件
# platform.py
"""Platform compatibility."""
from __future__ import absolute_import, unicode_literals import sys
import platform # Jython does not have this attribute
try:
from socket import SOL_TCP
except ImportError: # pragma: no cover
看起来, 当 vine 包中 five.py 执行到 platform.release 时, 解释器混淆了两个 platform, 导致报错.
不过问题到这里并不能结束, 虽然问题可以在 centos 6, 非 /usr/bin/ 路径安装的 Python 2.7.11 下复现, 为什么 mac 下就没有这个问题.
mac 下的默认 Python 也不是系统自带版本, brew install 与手动安装原理没有区别, 考虑到 amqp 2.1.2 发布时间已经一段时间, 并且在 celery 的 github 上也没有 issue 报出, 还需要想一下, 为什么偏偏在这些机器上出现了这个问题.
顺便, 在寻找 amqp 的历史版本时, 发现无从下手, pypi 页面只提供最新版, 最后在手动安装的过程中, 发现原来 pypi 上是有存储的.
地址 https://pypi.python.org/simple/amqp/
最后, 直面问题的态度, virtualenv 的原理是否完全理解了, import 相对路径绝对路径是否清楚, 异常信息是否认真看过, 都是些很基础的事情, 这个需要加强. 项目上线之后需要再总结一下.
centos6u3 安装 celery 总结的更多相关文章
- Python3安装Celery模块后执行Celery命令报错
1 Python3安装Celery模块后执行Celery命令报错 pip3 install celery # 安装正常,但是执行celery 命令的时候提示没有_ssl模块什么的 手动在Python解 ...
- python windows下安装celery调度任务时出错
由于celery 4.0不支持windows系统.所以用命令pip install Celery安装的celery是最新版4.0的不能在windows下运行. 在windows命令窗口运行: cele ...
- windows 安装 celery 避坑指南,看这篇就够了
- Celery学习---Celery 分布式队列介绍及安装
Celery介绍和基本使用 Celery 是一个 基于python开发的分布式异步消息任务队列,通过它可以轻松的实现任务的异步处理, 如果你的业务场景中需要用到异步任务,就可以考虑使用celery, ...
- windows下安装redis、celery,并启动测试
Windows 环境下基于 Redis 的 Celery 任务调度模块的实现 搭建环境: Windows-x64 10 Celery 3.1.23 Celery-with-redis 3.0 Redi ...
- airflow 安装配置celery+rabbitmq celery+redis
AirFlow的安装可以参考:https://www.cnblogs.com/braveym/p/11378851.html 这里介绍的是AirFlow 安装配置celery+rabbitmq 和 ...
- celery 框架
转自:http://www.cnblogs.com/forward-wang/p/5970806.html 生产者消费者模式 在实际的软件开发过程中,经常会碰到如下场景:某个模块负责产生数据,这些数据 ...
- celery使用方法
1.celery4.0以上不支持windows,用pip安装celery 2.启动redis-server.exe服务 3.编辑运行celery_blog2.py !/usr/bin/python c ...
- celery 异步任务小记
这里有一篇写的不错的:http://www.jianshu.com/p/1840035cb510 自己的"格式化"后的内容备忘下: 我们总在说c10k的问题, 也做了不少优化, 然 ...
随机推荐
- 常look的Git命令
常用的Git命令 命令 简要说明 git add 添加至暂存区 git add–interactive 交互式添加 git apply 应用补丁 git am 应用邮件格式补丁 git a ...
- 【数据库】_由2000W多条开房数据引发的思考、实践----给在校生的一个真实【练耙场】,同学们,来开始一次伟大的尝试吧。
× 缘起---闲逛博客园 前几天的时候,在某一QQ群看到一条消息“XXX酒店开房XXXBTXX迅雷BT下载”,当时是一目十行的心态浏览,目光掠过时, 第一反应我想多了~以为是XX种子(你懂的~ ...
- 项目中angular js的接口url统一管理
为了防止环境改变时需要修改多处接口的url,项目中用到了一个config.json文件来统一管理url: 在src下建立config文件夹,创建config.json文件,主要内容如下: { &quo ...
- Beta阶段测试报告
前端测试计划 具体测试项如下: 注册测试 登录测试 忘记密码测试 一次登录后自动登录测试 退出登录测试 编辑资料测试 查看好友测试 搜索好友测试 添加好友测试 获取当前正在游戏的房间测试 创建房间测试 ...
- Jquery datatables 使用方法
说明: 1.s开头的是字符串 2.b开头的是布尔值 3.i开头的是整型值 4.o开头的是Json对象 5.ao开头的是Json对象数组 6.aa开头的是二维数组 7.fn开头的是函数 服务器端返回的数 ...
- RP
关键印象 Base note 任务(task):一段代码. 进程(process):程序的实体,一个正在运行中的可执行文件.拥有独立的虚拟内存空间和系统资源,包括端口权限. 线程(thread):进程 ...
- linux phpexcel导出后打不开
在PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel2007'); 后面加一行 ob_clean();
- 翻书插件:wowbook.js
wowbook是一个jQuery插件,可以让你在网站中发布一本页面翻转效果超赞的书. demo演示 基本页面 <!DOCTYPE html> <html lang="en& ...
- docker run elasticsearch
docker run -d --name=esNode1 -p 9200:9200 -p 9300:9300 elasticsearch:2.3 -Des.network.publish_host=& ...
- [Java] ApplicationContext 辅助类
我们经常需要获取各种 bean , 需要用到 context. 下面的类可以方便的使用 context , 获取 bean 等. import java.io.File; import java.ut ...