推荐学习书目
› 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
5TuNan
V2EX  ›  Python

Python 实现延时任务

  •  1
     
  •   5TuNan · Mar 19, 2020 · 7360 views
    This topic created in 2422 days ago, the information mentioned may be changed or developed.

    如题,现有一个需求创建一个资源,如果该资源创建成功,5 分钟后对这个资源做一定的操作。请问使用 Python 如何实现。

    25 replies  •  2022-01-28 15:13:19 +08:00
    DoubleShut
    DoubleShut
    Mar 19, 2020
    1
    建议不要自己实现,可以用专业的队列,比如 rabbitmq,可以通过投递消息,设置消息过期时间,死信交换机,然后消费死信
    2kCS5c0b0ITXE5k2
    2kCS5c0b0ITXE5k2
    Mar 19, 2020
    2
    还是上专业的消息队列吧,...
    Orenoid
    Orenoid
    Mar 19, 2020
    3
    celery
    qile1
    qile1
    Mar 19, 2020 via Android
    4
    做一个操作是外部调用吗?内部能不能 time。sleep 五分钟然后执行,进程和线程通信就那几种方法
    wzwwzw
    wzwwzw
    Mar 19, 2020
    5
    celery 可以延迟执行吧,这个是简单的实现方式。
    sujin190
    sujin190
    Mar 19, 2020
    6
    https://github.com/snower/forsun

    之前做过一个服务,高性能,用资源 ID 创建任务,到时发起动作,可以是 shell、http 请求、mysql 语句、redis 命令,可以使用 redis 持久化存储,不拍丢失,特别适合订单超时支付取消、配送订单超时之类的人物

    当然也可也自己编写执行器扩展接入自己的项目里
    Feedline
    Feedline
    Mar 19, 2020
    7
    用 redis 吧,轻量级,快速
    hmxxmh
    hmxxmh
    Mar 19, 2020 via Android❤️1
    8
    用 Apscheduler,python 的异步任务调度框架
    Leigg
    Leigg
    Mar 19, 2020 via Android
    9
    不就是定时任务吗,找找对应方案
    renyijiu
    renyijiu
    Mar 19, 2020❤️1
    10
    1. 简单的,落库,定时查询;
    2. redis 的 zset,定时查询
    3. 支持延时任务的消息队列

    常见的几个方案
    blackcurrant
    blackcurrant
    Mar 19, 2020 via iPhone
    11
    time.sleep(300)
    do()
    zhoudaiyu
    zhoudaiyu
    Mar 19, 2020 via iPhone
    12
    Celery 干就完了
    Tink
    Tink
    Mar 19, 2020 via iPhone
    13
    sleep 一把梭
    Hello0World
    Hello0World
    Mar 19, 2020 via Android
    14
    celery
    lithbitren
    lithbitren
    Mar 19, 2020
    15
    非阻塞的等待,如果不想借助第三方库,最起码也得开个新进程独立等待。
    Maboroshii
    Maboroshii
    Mar 19, 2020
    16
    循环检查任务是否可以执行
    labulaka521
    labulaka521
    Mar 19, 2020 via Android
    17
    time.sleep 300
    LengthMin
    LengthMin
    Mar 19, 2020
    18
    https://github.com/agronholm/apscheduler
    Advanced Python Scheduler

    https://github.com/coleifer/huey
    huey, a little task queue for python
    cz5424
    cz5424
    Mar 20, 2020 via iPhone
    19
    最简单就是 sleep 啦
    euph
    euph
    Mar 20, 2020
    20
    所以小白首先想到的就算 sleep 吗?第一次见各位大神各种骚操作
    linvaux
    linvaux
    Mar 20, 2020
    21
    celery 了解一下
    Dustyposa
    Dustyposa
    Mar 20, 2020❤️1
    22
    任务简单的话 可以上原生简单的调度库
    sched

    https://docs.python.org/zh-cn/3/library/sched.html?highlight=sched
    coderEOS
    coderEOS
    Mar 20, 2020
    23
    crontab 1 分一次 + 然后存个文件列表 也可以
    lithbitren
    lithbitren
    Mar 22, 2020
    24
    我佛了,复习了一下文档,直接 threading.Timer 创建任务再 start 就完事了,最直接简单,线程级异步非阻塞,主进程主线程干啥都不影响,时间一到就会开始响应,不怕影响 gil 不开新进程也无妨。


    https://docs.python.org/zh-cn/3/library/threading.html#timer-objects
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   3026 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 62ms · UTC 11:44 · PVG 19:44 · LAX 03:44 · JFK 06:44
    ♥ Do have faith in what you're doing.