推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
liudaqi
V2EX  ›  Python

用 while+time.sleep()做定时任务,和 contrab 启动定时任务,使用上有什么差别吗?

  •  
  •   liudaqi · Nov 27, 2018 via Android · 3487 views
    This topic created in 2727 days ago, the information mentioned may be changed or developed.
    要创建一个每隔 2 小时运行一次的数据库清理任务,用 while 和 contrab 启动这样的任务,有什么差别吗?推荐用哪个方式比较好?
    10 replies    2018-11-28 16:34:39 +08:00
    Outliver0
        1
    Outliver0  
       Nov 27, 2018
    while 是 python 程序在执行任务,contrab 是托管到操作系统,推荐第二个,具体看实际
    xia0pia0
        2
    xia0pia0  
       Nov 27, 2018
    推荐是第二个,一般来说系统不挂的话,crontab 的稳定性还是挺可靠的。
    MilkShake
        3
    MilkShake  
       Nov 27, 2018
    推荐第二个
    holajamc
        4
    holajamc  
       Nov 27, 2018   ❤️ 1
    37Y37
        5
    37Y37  
       Nov 27, 2018
    virusdefender
        6
    virusdefender  
       Nov 27, 2018
    单个简单任务的话,crontab 足够了,复杂任务我用 apscheduler,如果每个任务都开单独进程的话,有些浪费
    iConnect
        7
    iConnect  
       Nov 27, 2018
    推荐 APScheduler 简单好用
    rrfeng
        8
    rrfeng  
       Nov 27, 2018
    1. sleep 并不精确,时间差累积你懂的
    2. 执行任务的时间,你 sleep 了吗?要开另一个线程吗?
    xpresslink
        9
    xpresslink  
       Nov 28, 2018
    从可靠性来说肯定 cronjob 要好,但是有系统依赖。
    你自己写的进程要弄成守护进程才行不然总担心挂掉。
    lolizeppelin
        10
    lolizeppelin  
       Nov 28, 2018
    看你内容...如果你循环内容需要复杂的上下文那就靠守护进程 sleep, 精准问题可以通过调用系统时间定期补偿

    计划任务里的常见的数据库定期脚本注意通过 linux 文件锁来避免重复执行即可
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2878 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 44ms · UTC 10:19 · PVG 18:19 · LAX 03:19 · JFK 06:19
    ♥ Do have faith in what you're doing.