欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用signal定時結(jié)束AsyncIOScheduler任務(wù)的問題

 更新時間:2021年07月26日 14:20:08   作者:返回主頁臨淵(v:superz-han)  
這篇文章主要介紹了Python使用signal定時結(jié)束AsyncIOScheduler任務(wù),在使用aiohttp結(jié)合apscheduler的AsyncIOScheduler模擬定點并發(fā)的時候遇到兩個問題,針對每個問題給大家詳細(xì)介紹,需要的朋友可以參考下

在使用aiohttp結(jié)合apscheduler的AsyncIOScheduler模擬定點并發(fā)的時候遇到兩個問題

  1. 在調(diào)度器scheduler.start()后,程序直接退出(在Jupiter中任務(wù)可以正常啟動)
  2. 如何在指定時間調(diào)用scheduler.shutdown()? (因為程序直接退出了)

原調(diào)試代碼如下:

from datetime import datetime, timedelta

import aiohttp
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore
async def get(session):
    url = 'https://httpbin.org/get?a=1'
    async with session.get(url) as res:
        print('get', res.status)
        return await res.text()

async def post(session):
    url = 'https://httpbin.org/post?b=2'
    async with session.post(url) as res:
        print('post', res.status)
        return await res.text()
async def main():
    async with aiohttp.ClientSession() as session:
        await get(session)
        await post(session)

if __name__ == '__main__':
    jobstores = {'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')}
    scheduler = AsyncIOScheduler(jobstores=jobstores)
    for i in range(10):  # 添加10個任務(wù)
        job = scheduler.add_job(main, 'date', run_date=datetime.now() + timedelta(seconds=10))
    scheduler.start()

Google后發(fā)現(xiàn)AsyncIOScheduler的使用需要在scheduler啟動后,需要自己調(diào)用asyncio.get_event_loop().run_forever()來啟動協(xié)程任務(wù)。
但是一旦run_forever()則就會阻塞至死。除非有KeyboardInterrupt, SystemExit等異?;蛘邚姎硗V蛊溥\行。
此時想到使用Python的signal來定時發(fā)送信號,修改后程序如下,可以正常延遲停止(感覺有點像模擬Go的defer)。

# -*- coding: utf-8 -*-
"""
@Time : 2021/7/23
@Auth : hanzhichao
@Desc:
"""
from datetime import datetime, timedelta
import signal
import asyncio

import aiohttp
from apscheduler.schedulers.asyncio import AsyncIOScheduler
from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore

async def get(session):
    url = 'https://httpbin.org/get?a=1'
    async with session.get(url) as res:
        print('get', res.status)
        return await res.text()

async def post(session):
    url = 'https://httpbin.org/post?b=2'
    async with session.post(url) as res:
        print('post', res.status)
        return await res.text()

async def main():
    async with aiohttp.ClientSession() as session:
        await get(session)
        await post(session)

if __name__ == '__main__':
    jobstores = {'default': SQLAlchemyJobStore(url='sqlite:///jobs.sqlite')}
    scheduler = AsyncIOScheduler(jobstores=jobstores)
    for i in range(10):  # 添加10個任務(wù)
        job = scheduler.add_job(main, 'date', run_date=datetime.now() + timedelta(seconds=10))
    scheduler.start()
    signal.alarm(20)  # 20秒后終止程序
    asyncio.get_event_loop().run_forever()  # 永遠(yuǎn)運行

到此這篇關(guān)于Python使用signal定時結(jié)束AsyncIOScheduler任務(wù)的文章就介紹到這了,更多相關(guān)Python定時結(jié)束AsyncIOScheduler任務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 利用Python實現(xiàn)批量加密Excel文件

    利用Python實現(xiàn)批量加密Excel文件

    在日常工作中,我們經(jīng)常需要處理大量的Excel文件,為了保護(hù)敏感數(shù)據(jù)的安全性,我們可能需要對這些文件進(jìn)行加密,本文主要介紹了如何使用Python實現(xiàn)批量加密Excel文件,需要的可以參考下
    2023-11-11
  • Python實現(xiàn)對比不同字體中的同一字符的顯示效果

    Python實現(xiàn)對比不同字體中的同一字符的顯示效果

    這篇文章主要介紹了Python實現(xiàn)對比不同字體中的同一字符的顯示效果,也就是對比不同字體中某個字的顯示效果,這在做設(shè)計時非常有用,需要的朋友可以參考下
    2015-04-04
  • pandas讀取HTML和JSON數(shù)據(jù)的實現(xiàn)示例

    pandas讀取HTML和JSON數(shù)據(jù)的實現(xiàn)示例

    Pandas可以直接讀取html和JSON數(shù)據(jù),本文就來介紹一下pandas讀取HTML和JSON數(shù)據(jù)的實現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),感興趣的可以了解一下
    2024-01-01
  • python 查找字符串是否存在實例詳解

    python 查找字符串是否存在實例詳解

    這篇文章主要介紹了python 查找字符串是否存在實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-01-01
  • Python通過兩個dataframe用for循環(huán)求笛卡爾積

    Python通過兩個dataframe用for循環(huán)求笛卡爾積

    這篇文章主要介紹了Python通過兩個dataframe用for循環(huán)求笛卡爾積,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-04-04
  • python讀取Kafka實例

    python讀取Kafka實例

    今天小編就為大家分享一篇python讀取Kafka實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python利用字典將兩個通訊錄文本合并為一個文本實例

    Python利用字典將兩個通訊錄文本合并為一個文本實例

    這篇文章主要介紹了Python利用字典將兩個通訊錄文本合并為一個文本實例,具有一定借鑒價值,需要的朋友可以參考下
    2018-01-01
  • 詳解Flask框架中Flask-Login模塊的使用

    詳解Flask框架中Flask-Login模塊的使用

    Flask-Login 是一個 Flask 模塊,可以為 Flask 應(yīng)用程序提供用戶登錄功能。這篇文章將通過一些示例為大家介紹一下Flask-Login模塊的使用,需要的可以參考一下
    2023-01-01
  • OpenCV?光流Optical?Flow示例

    OpenCV?光流Optical?Flow示例

    這篇文章主要為大家介紹了OpenCV?光流Optical?Flow示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-04-04
  • 分享python中matplotlib指定繪圖顏色的八種方式

    分享python中matplotlib指定繪圖顏色的八種方式

    這篇文章主要給大家分享的是python中matplotlib指定繪圖顏色的八種方式,在使用matplotlib的pyplot庫進(jìn)行繪圖時,經(jīng)常會發(fā)現(xiàn)各種開源代碼指定“color”的方式并不一致,下面就向大家展示8種指定color的方式,需要的朋友可以參考一下
    2022-03-03

最新評論