python在server程序中运行定时任务以及优雅退出

本文介绍了一个使用Python实现的简单定时任务处理方案,通过线程事件和信号处理确保了定时任务能够平滑地结束,避免了Ctrl+C退出时可能造成的任务中断问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

话不多说,上代码

def job():
    ticker = threading.Event()
    while not ticker.wait(60):
        Cron().main()

def start():
    cro=threading.Thread(target=job)
    cro.start()
    h = '127.0.0.1'
    port = 9007  
    dic = {"host": h,
           "port": port,
           "log_level": "error",
           "reload":True,
           }    
    uvicorn.run('ctrm:app', **dic)

但是这么运行会有一个问题,就是ctrl c退出有可能定时任务正运行被打断,结合这个代码,仅仅展示最核心部分,注意信号量去sigint,兼容性更强。

import signal
import time,os


def signal_handler(signum, frame):
    print('收到要杀死我的信号: ', signum)
    # 在这里处理最后的事情
    print ("下面的代码是自杀")
    os.kill(os.getpid(), signal.SIGINT)


signal.signal(signal.SIGTERM, signal_handler)
signal.signal(signal.SIGINT, signal_handler)
while True:
    print ("main")
    time.sleep(5)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值