1
yueyoum 2015-03-24 10:20:00 +08:00
我当时也学过一段时间 celery ,但是没学会。
果断放弃 可用来替代celery的东西很多。 |
3
no13bus 2015-03-24 10:28:46 +08:00
这个和redis没关系。
|
4
hahastudio 2015-03-24 10:42:59 +08:00
我猜可能的原因是有的时候 5 min 并没有做完?
|
6
RangerWolf OP @hahastudio 你猜的不对:D task的receive time 就不对了~ 每次执行完成的时间不到1秒钟
@no13bus 官方说redis会丢数据。 我以为数据量小的是没关系~ 我再试试看rabitt mq @yueyoum 你用什么代替的?同问 |
7
0bit 2015-03-24 11:23:06 +08:00
我觉着 @hahastudio 猜的可能是对的,Celery的定时只能是保证在那个时间点之后可用,但是你的worker当时可能没忙完别的,你可以监控一下worker的执行,或者多开几个worker试试
|
8
no13bus 2015-03-24 11:35:33 +08:00
celery -A myproject worker -P gevent -c 1000 -l info
这个命令试试。 我知道的定时任务有这些: https://github.com/vinta/awesome-python#job-scheduler 但是我觉得都没有celery功能强大。你的任务应该是很基本的,贴一下你的celery的setting和命令。干说说不出啥来。 |
9
RangerWolf OP @no13bus 多谢! 我把代码放到gitcafe上面去了
定义5分钟一次celery.py https://gitcafe.com/rangerwolf/CeleryDemoProjects/blob/master/proj_mgr/celery.py 定义具体任务的tasks.py https://gitcafe.com/rangerwolf/CeleryDemoProjects/blob/master/proj_mgr/tasks.py 其中最后一个 git_pull 是需要每5分钟执行一次的函数 |
10
lxyu 2015-03-24 13:00:19 +08:00 1
celery 是队列,就不是用来当 cron 用的。celery beat 只是把任务放到了池子里,但是什么时候执行?什么时候执行完?都要看 worker。如果要 debug,可以看 worker 的日志,看当时任务的执行情况和 worker 的情况,也可以在 gitpull 的前后打下日志。
“队列”本身就意味着不定时,如果要做定时任务还是用 cron 吧。 |
11
RangerWolf OP @lxyu 好吧 原来是这样~ 多谢指导!
|