项目运行过程中有大量的定时任务,线上运行环境为AIX,在以前的运行中多采用crontab或C++编写的定时调度(其中用到了alarm信号、共享内存、消息队列等,移植起来非常麻烦)。本次项目拟采用python3开发, apscheduler 提供了非常丰富而且方便易用的定时任务接口。
apscheduler在线安装非常方便
pin install apscheduler,安装即可
第一次踩坑(以下操作不正确)
业务环境与互联网完全隔离,需要采用离线安装的方式。
业务环境已经安装了python2、python3.
离线安装步骤如下:
从https://pypi.python.org/pypi/APScheduler下载离线安装包。
解压放到服务器上即可。
遇到问题:
1.tzlocal包找不到,APScheduler依赖tzlocal,下载tzlocal包,解压放到服务器上
2.pytz包找不到,tzloca依赖APScheduler,下载pytz包,解压放到服务器上
3.AttributeError: module ‘enum’ has no attribute ‘IntFlag’。这个是因为服务其上装了python2和python3,lib指向的是python2的环境
设置正确的环境变量
export PYTHONPATH=/……/PYTHONLIB/lib/python3.8/site-packages:/opt/freeware/lib64/python3.8/
可解决上面的问题。
4.six包找不到,APScheduler依赖six,下载six包,解压放到服务器上即可
以为终于顺