最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用signal定時結束AsyncIOScheduler任務的問題

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

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

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

原調試代碼如下:

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個任務
        job = scheduler.add_job(main, 'date', run_date=datetime.now() + timedelta(seconds=10))
    scheduler.start()

Google后發(fā)現(xiàn)AsyncIOScheduler的使用需要在scheduler啟動后,需要自己調用asyncio.get_event_loop().run_forever()來啟動協(xié)程任務。
但是一旦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個任務
        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()  # 永遠運行

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

相關文章

  • python opencv圓、橢圓與任意多邊形的繪制實例詳解

    python opencv圓、橢圓與任意多邊形的繪制實例詳解

    在本篇文章里小編給大家整理的是關于python-opencv-圓、橢圓與任意多邊形的繪制內(nèi)容,需要的朋友們可以學習參考下。
    2020-02-02
  • 使用Python實現(xiàn)調整Excel中的行列順序

    使用Python實現(xiàn)調整Excel中的行列順序

    調整Excel?行列順序指的是改變工作表中行或列的位置,以便更好地展示和分析數(shù)據(jù),本文將介紹如何通過Python高效地調整Excel?行列順序,感興趣的可以了解下
    2025-01-01
  • 使用Python根據(jù)一個列表的順序對其他列表進行排序

    使用Python根據(jù)一個列表的順序對其他列表進行排序

    這篇文章主要介紹了使用Python根據(jù)一個列表的順序對其他列表進行排序,根據(jù)列表B中每個元素的下標來獲取列表A中對應位置的元素,將其作為排序依據(jù)即可,需要的朋友可以參考下
    2023-10-10
  • python實現(xiàn)aes加密及pycryptodome庫使用

    python實現(xiàn)aes加密及pycryptodome庫使用

    AES算法是高級加密標準,它是一種對稱加密算法,AES只有一個密鑰,這個密鑰既用來加密,也用于解密,這篇文章主要給大家介紹了關于python實現(xiàn)aes加密及pycryptodome庫使用的相關資料,需要的朋友可以參考下
    2023-10-10
  • Pytest框架之fixture詳解(一)

    Pytest框架之fixture詳解(一)

    本文詳細講解了Pytest框架之fixture,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • 快速排序的四種python實現(xiàn)(推薦)

    快速排序的四種python實現(xiàn)(推薦)

    這篇文章主要介紹了python實現(xiàn)快速排序算法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • python中django框架通過正則搜索頁面上email地址的方法

    python中django框架通過正則搜索頁面上email地址的方法

    這篇文章主要介紹了python中django框架通過正則搜索頁面上email地址的方法,涉及django框架及正則表達式的使用技巧,需要的朋友可以參考下
    2015-03-03
  • Django中template for如何使用方法

    Django中template for如何使用方法

    這篇文章主要介紹了Django中template for如何使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • python?文件讀寫操作示例源碼解讀

    python?文件讀寫操作示例源碼解讀

    這篇文章主要為大家介紹了python?文件讀寫操作示例源碼解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-03-03
  • python實現(xiàn)根據(jù)圖標提取分類應用程序實例

    python實現(xiàn)根據(jù)圖標提取分類應用程序實例

    這篇文章主要介紹了python實現(xiàn)根據(jù)圖標提取分類應用程序實例,是非常實用的應用程序技巧,需要的朋友可以參考下
    2014-09-09

最新評論

金平| 榆树市| 新河县| 鄂托克旗| 武宁县| 西乡县| 凤阳县| 新郑市| 安西县| 霍林郭勒市| 洞口县| 桂东县| 新宾| 鹿邑县| 山阴县| 上思县| 武清区| 油尖旺区| 济阳县| 和林格尔县| 福建省| 花垣县| 新龙县| 安塞县| 阜康市| 新源县| 竹山县| 宜昌市| 永和县| 金堂县| 同江市| 宜良县| 溧水县| 肥西县| 香格里拉县| 伊春市| 奉化市| 苏尼特右旗| 北碚区| 天津市| 永安市|