1. 程式人生 > >Python利用APScheduler實現定時任務框架

Python利用APScheduler實現定時任務框架

APScheduler是一款功能非常強大的定時任務框架。利用APScheduler框架我們可以很方便實現一個基於Python的定時任務系統

1,安裝

pip install apscheduler

2,簡單呼叫(一次性呼叫任務)

from apscheduler.schedulers.blocking import BlockingScheduler
import datetime
def aps_test():
    print (datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), '你好')

scheduler = BlockingScheduler()
scheduler.add_job(func=aps_test, next_run_time=datetime.datetime.now() + datetime.timedelta(seconds=2))
scheduler.start()

啟動後兩秒,執行任務aps_test()

3,在flask中使用APScheduler(也是一次呼叫性任務)

from flask import Flask,jsonify
from flask_apscheduler import APScheduler
import datetime
import random

app = Flask(__name__)
queue = []

class Config(object):
    JOBS = [
        {
            'id': 'jobjob',
            # 'func': 'jobs:job1',
            'func': '__main__:job1',
            'args': (1, 2),
            'next_run_time':datetime.datetime.now() + datetime.timedelta(seconds=10)
        }
    ]
    SCHEDULER_API_ENABLED = True

def job1(a, b):
    global queue
    while True:
        if len(queue) > 10:
            queue = []
        else:
            ranInfo = random.randint(1, 7)  # 隨機1-7
            queue.append(ranInfo)

@app.route("/getImgInfo")
def getImgInfo():
    global queue
    return jsonify({'status': 0, 'errmsg': queue})

if __name__ == '__main__':
    app.config.from_object(Config())
    scheduler = APScheduler()
    # it is also possible to enable the API directly
    # scheduler.api_enabled = True
    scheduler.init_app(app)
    scheduler.start()
    app.run()

說明:使用定時排程任務是為了解決一個問題。因為後臺有個死迴圈程式,相當於上面的job1,我要獲得該程式中的queue資訊。不使用排程任務,web程式就啟動不起來。我想過使用訊息佇列,把web程式和死迴圈程式拆成兩個程式。一個向訊息佇列中發訊息,另一個向訊息佇列中取訊息。但那樣太麻煩了,還有許多這樣那樣的問題。

現在使用定時排程任務就能完美解決了,上面的程式是在啟動後10秒這行job1任務。

4,參考部落格地址

相關推薦

Python利用APScheduler實現定時任務框架

APScheduler是一款功能非常強大的定時任務框架。利用APScheduler框架我們可以很方便實現一個基於Python的定時任務系統 1,安裝 pip install apscheduler 2,簡單呼叫(一次性呼叫任務) from apscheduler.sc

Flask(十一)flash與APScheduler 實現定時任務

.config spa ash ret cond 細節 bsp conf 視圖 from flask import Flask from flask_apscheduler import APScheduler # 引入APScheduler class Conf

spring(springboot)利用註解實現定時任務實現非同步處理

spring3.0之後就實現了自己的定時任務,而且非常簡單 1.在啟動類上加 @EnableScheduling 註解開啟定時任務支援 2.在自己的定時任務類上加 @EnableScheduling 即可,第一步不用說了,第二步程式碼如下 @Configuration/

python 操作crontab 實現定時任務

crontab預設編輯器為nano,不方便使用。修改crontab預設編輯器為vi或者其他的編輯器。export EDITOR="/usr/bin/vim" ; crontab -e更簡單的辦法,直接執行命令:select-editor然後選擇編輯器

python-利用senleium實現定時重啟路由器

color 重啟 pin start exception starting datetime man import from selenium import webdriver import time #from datetime import * #import sen

Python定時任務框架APScheduler學習詳解

情況 類型 container 邏輯 專業 取值 控制 scheduled 執行器 轉載一篇文章,講解了Python定時任務框架APScheduler的使用,原文地址:https://www.cnblogs.com/luxiaojun/p/6567132.html,內容如下

python 定時任務框架APScheduler

APScheduler簡介 在平常的工作中幾乎有一半的功能模組都需要定時任務來推動,例如專案中有一個定時統計程式,定時爬出網站的URL程式,定時檢測釣魚網站的程式等等,都涉及到了關於定時任務的問題,第一時間想到的是利用time模組的time.sleep()方法使程式休眠來達

如何在python定時任務框架apscheduler中尋找丟失的定時任務

http://apscheduler.readthedocs.io/en/latest/modules/schedulers/base.html?highlight=add_jobstore add_jobstore(jobstore, alias='default'

Spring+Quartz框架實現定時任務(集群,分布式)

log cor alt 放置 這一 表達 mod 建數據庫 strac 1、定時任務的必要性:定時任務在應用中的重要性不言而喻,大多是應用,特別是金融應用更是離不開定時任務,能用定時任務來處理異常訂單,完成跑批,定時活動(雙11)等。在初期應用的訪問量並不是那麽大,

Spring整合Quartz框架實現定時任務跑批(Maven完整版)

觸發器 delay cut www 方法 lin job 定時任務 任務調度 Quartz 介紹Quartz is a full-featured, open source job scheduling service that can be integrated with

在Java web專案springMVC框架實現定時任務

在工作中遇到一個需求,需要定時自動執行某項功能,這就需要用到定時任務了。首先先來理一下實現思路,定時任務可以用Java.util中的timer類,把需要定時執行的任務封裝到timer類的排程表中,這個timer物件需要在程式初始化時建立,這樣才可以讓它自動執行。那麼我們就可以想到需要借用

利用pendingintent 和AlarmManager實現定時任務的一些分析

PendingIntent 獲取 PendingIntent物件的方法: 可以通過getActivity(Context context, int requestCode, Intent intent, int flags)系列方法從系統取得一個用於啟動一個

MAC OS和Linux下的crontab實現定時任務(執行python等指令碼)

前言 crontab命令常見於Unix和類Unix的作業系統中,用於設定週期性被執行的指令。該命令從標準輸入裝置讀指令,並將其存入到“crontab”檔案中,以供之後讀取和執行。 使用方法 1.crontab -e 編輯自定義自己的任務,儲存退出後自動新增到cron

Linux VPS主機利用Crontab實現定時重啟任務

第一、安裝Crontab可執行環境 一般的VPS/伺服器是支援的,但是有些可能沒有支援就需要我們來給予安裝。 A - centos系統 #安裝Crontab yum install vixie-cron crontabs #設定開機啟動Crontab

quartz java實現定時任務框架

概述瞭解Quartz體系結構Quartz對任務排程的領域問題進行了高度的抽象,提出了排程器、任務和觸發器這3個核心的概念,並在org.quartz通過介面和類對重要的這些核心概念進行描述:●Job:是一個介面,只有一個方法void execute(JobExecution

不用任何框架,Java 就能實現定時任務的 3 種方法!

是的,不用任何框架,用我們樸素的 Java 程式語言就能實現定時任務。 今天,棧長就介紹 3 種實現方法,教你如何使用 JDK 實現定時任務! ## 1、 sleep 這也是我們最常用的 sleep 休眠大法,不只是當作休眠用,我們還可以利用它很輕鬆的能實現一個簡單的定時任務。 **實現邏輯:**

PHP實現定時任務的幾種方式

選項 等待 process 一個 temp 表示 服務器 實現 ref 關於定時任務,之前以前認識了一種最常用的:crontab定時任務。通過linux的定時任務去實現。今天又認識了一下php實現定時方式的其它方式,總結一下。 一 服務器定時任務 服務器定時任務,其實就是u

Spring與Quartz的整合實現定時任務調度

java代碼 content sta 一個bug next 小時 change nsa 發現 Spring與Quartz的整合實現定時任務調度 博客分類: Java Web SpringQuartz任務調度定時任務 最近在研究Spring中的定時任務功能,最好的

JAVA實現定時任務

col 時間 頻率 set 進行 con hour gettime test import java.util.Calendar; import java.util.Date; import java.util.Timer; import java.util

基於spring+quartz的分布式定時任務框架

path simple ngs 分布 方式 fix set 分布式 .cn http://www.cnblogs.com/aaronfeng/p/5537177.html 問題背景   我公司是一個快速發展的創業公司,目前有200人,主要業務是旅遊和酒店相關的,應用叠