当前位置: 首页 > news >正文

官方百度网站页面优化包括

官方百度,网站页面优化包括,鞍山是哪个省哪个市,开篇网络1.APScheduler简介#xff1a;APScheduler是Python的一个定时任务框架#xff0c;可以很方便的满足用户定时执行或者周期执行任务的需求#xff0c;它提供了基于日期date、固定时间间隔interval 、以及类似于Linux上的定时任务crontab类型的定时任务。并且该框架不仅可以添加…1.APScheduler简介APScheduler是Python的一个定时任务框架可以很方便的满足用户定时执行或者周期执行任务的需求它提供了基于日期date、固定时间间隔interval 、以及类似于Linux上的定时任务crontab类型的定时任务。并且该框架不仅可以添加、删除定时任务还可以将任务存储到数据库中实现任务的持久化所以使用起来非常方便。2.APScheduler安装APScheduler的安装相对来说也非常简单可以直接利用pip安装如果没有pip可以下载源码利用源码安装。1).利用pip安装(推荐)# pip install apscheduler# python setup.py install3.基本概念APScheduler有四种组件及相关说明1) triggers(触发器)触发器包含调度逻辑每一个作业有它自己的触发器用于决定接下来哪一个作业会运行除了他们自己初始化配置外触发器完全是无状态的。2)job stores(作业存储)用来存储被调度的作业默认的作业存储器是简单地把作业任务保存在内存中其它作业存储器可以将任务作业保存到各种数据库中支持MongoDB、Redis、SQLAlchemy存储方式。当对作业任务进行持久化存储的时候作业的数据将被序列化重新读取作业时在反序列化。3) executors(执行器)执行器用来执行定时任务只是将需要执行的任务放在新的线程或者线程池中运行。当作业任务完成时执行器将会通知调度器。对于执行器默认情况下选择ThreadPoolExecutor就可以了但是如果涉及到一下特殊任务如比较消耗CPU的任务则可以选择ProcessPoolExecutor当然根据根据实际需求可以同时使用两种执行器。4) schedulers(调度器)调度器是将其它部分联系在一起一般在应用程序中只有一个调度器应用开发者不会直接操作触发器、任务存储以及执行器相反调度器提供了处理的接口。通过调度器完成任务的存储以及执行器的配置操作如可以添加。修改、移除任务作业。APScheduler提供了多种调度器可以根据具体需求来选择合适的调度器常用的调度器有BlockingScheduler适合于只在进程中运行单个任务的情况通常在调度器是你唯一要运行的东西时使用。BackgroundScheduler: 适合于要求任何在程序后台运行的情况当希望调度器在应用后台执行时使用。AsyncIOScheduler适合于使用asyncio框架的情况GeventScheduler: 适合于使用gevent框架的情况TornadoScheduler: 适合于使用Tornado框架的应用TwistedScheduler: 适合使用Twisted框架的应用QtScheduler: 适合使用QT的情况1)下面一个简单的示例import timefrom apscheduler.schedulers.blocking import BlockingSchedulerdef test_job():print time.strftime(%Y-%m-%d %H:%M:%S, time.localtime(time.time()))scheduler BlockingScheduler()#该示例代码生成了一个BlockingScheduler调度器使用了默认的默认的任务存储MemoryJobStore以及默认的执行器ThreadPoolExecutor并且最大线程数为10。scheduler.add_job(test_job, interval, seconds5, idtest_job)#该示例中的定时任务采用固定时间间隔(interval)的方式每隔5秒钟执行一次。#并且还为该任务设置了一个任务idscheduler.start()2)如果想执行一些复杂任务如上边所说的同时使用两种执行器或者使用多种任务存储方式并且需要根据具体情况对任务的一些默认参数进行调整。可以参考下面的方式。(源码解析http://apscheduler.readthedocs.io/en/latest/userguide.html)第一种方式from pytz import utcfrom apscheduler.schedulers.background import BackgroundScheduler  # 导入调度器from apscheduler.jobstores.mongodb import MongoDBJobStore          # 导入作业存储from apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStore    # 导入作业存储from apscheduler.executors.pool import ThreadPoolExecutor, ProcessPoolExecutor  # 导入执行器jobstores {mongo: MongoDBJobStore(),default: SQLAlchemyJobStore(urlsqlite:///jobs.sqlite)}executors {default: ThreadPoolExecutor(20),processpool: ProcessPoolExecutor(5)}job_defaults {coalesce: False,max_instances: 3}scheduler BackgroundScheduler(jobstoresjobstores, executorsexecutors, job_defaultsjob_defaults, timezoneutc)第二种方式from apscheduler.schedulers.background import BackgroundSchedulerscheduler BackgroundScheduler({apscheduler.jobstores.mongo: {type: mongodb},apscheduler.jobstores.default: {type: sqlalchemy,url: sqlite:///jobs.sqlite},apscheduler.executors.default: {class: apscheduler.executors.pool:ThreadPoolExecutor,max_workers: 20},apscheduler.executors.processpool: {type: processpool,max_workers: 5},apscheduler.job_defaults.coalesce: false,apscheduler.job_defaults.max_instances: 3,apscheduler.timezone: UTC,})第三种方式from pytz import utcfrom apscheduler.schedulers.background import BackgroundSchedulerfrom apscheduler.jobstores.sqlalchemy import SQLAlchemyJobStorefrom apscheduler.executors.pool import ProcessPoolExecutorjobstores {mongo: {type: mongodb},default: SQLAlchemyJobStore(urlsqlite:///jobs.sqlite)}executors {default: {type: threadpool, max_workers: 20},processpool: ProcessPoolExecutor(max_workers5)}job_defaults {coalesce: False,max_instances: 3}scheduler BackgroundScheduler()scheduler.configure(jobstoresjobstores, executorsexecutors,job_defaultsjob_defaults, timezoneutc)5.对任务作业的基本操作1).添加作业有两种方式第一种可以直接调用add_job()第二种使用scheduled_job()修饰器。而add_job()是使用最多的它可以返回一个apscheduler.job.Job实例因而可以对它进行修改或者删除而使用修饰器添加的任务添加之后就不能进行修改。#!/usr/bin/env python#-*- coding:UTF-8import timeimport datetimefrom apscheduler.schedulers.blocking import BlockingSchedulerdef job1(f):print time.strftime(%Y-%m-%d %H:%M:%S, time.localtime(time.time())), fdef job2(arg1, args2, f):print f, args1, args2def job3(**args):print argsAPScheduler支持以下三种定时任务cron: crontab类型任务interval: 固定时间间隔任务date: 基于日期时间的一次性任务scheduler BlockingScheduler()#循环任务示例scheduler.add_job(job1, interval, seconds5, args(1,), idtest_job1)#定时任务示例scheduler.add_job(job1, cron, second*/5, args(1,2,3,), idtest_job2)#一次性任务示例scheduler.add_job(job1, next_run_time(datetime.datetime.now() datetime.timedelta(seconds10)), args(1,), idtest_job3)传递参数的方式有元组(tuple)、列表(list)、字典(dict)注意不过需要注意采用元组传递参数时后边需要多加一个逗号#基于listscheduler.add_job(job2, interval, seconds5, args[a,b,list], idtest_job4)#基于tuplescheduler.add_job(job2, interval, seconds5, args(a,b,tuple,), idtest_job5)#基于dictscheduler.add_job(job3, interval, seconds5, kwargs{f:dict, a:1,b:2}, idtest_job6)print scheduler.get_jobs()scheduler.start()或者使用scheduled_job()修饰器来添加作业sched.scheduled_job(cron, second*/5 idmy_job_id,)def test_task():print(Hello world!)2).获得任务列表可以通过get_jobs方法来获取当前的任务列表也可以通过get_job()来根据job_id来获得某个任务的信息。并且apscheduler还提供了一个print_jobs()方法来打印格式化的任务列表。例如scheduler.add_job(my_job, interval, seconds5, idmy_job_id nametest_job)print scheduler.get_job(my_job_id)print scheduler.get_jobs()3).修改任务修改任务的属性可以使用apscheduler.job.Job.modify()或者modify_job()方法可以修改除了id的其它任何属性。例如job scheduler.add_job(my_job, interval, seconds5, idmy_job nametest_job)job.modify(max_instances5, namemy_job)4).删除任务:删除调度器中的任务有可以用remove_job()根据job ID来删除指定任务或者使用remove()如果使用remove()需要事先保存在添加任务时返回的实例对象任务删除后就不会在执行。注意通过scheduled_job()添加的任务只能使用remove_job()进行删除。例如job scheduler.add_job(my_job, interval, seconds5, idmy_job_id nametest_job)job.remove()或者scheduler.add_job(my_job, interval, seconds5, idmy_job_id nametest_job)scheduler.remove_job(my_job)5).暂停与恢复任务暂停与恢复任务可以直接操作任务实例或者调度器来实现。当任务暂停时它的运行时间会被重置暂停期间不会计算时间。暂停任务apscheduler.job.Job.pause()apscheduler.schedulers.base.BaseScheduler.pause_job()恢复任务apscheduler.job.Job.resume()apscheduler.schedulers.BaseScheduler.resume_job()6).启动调度器可以使用start()方法启动调度器BlockingScheduler需要在初始化之后才能执行start(),对于其他的Scheduler调用start()方法都会直接返回然后可以继续执行后面的初始化操作。例如:from apscheduler.schedulers.blocking import BlockingSchedulerdef my_job():print Hello world!scheduler BlockingScheduler()scheduler.add_job(my_job, interval, seconds5)scheduler.start()7).关闭调度器使用下边方法关闭调度器scheduler.shutdown()默认情况下调度器会关闭它的任务存储和执行器并等待所有正在执行的任务完成如果不想等待可以进行如下操作scheduler.shutdown(waitFalse)注意当出现No handlers could be found for logger “apscheduler.scheduler”次错误信息时说明没有 logging模块的logger存在所以需要添加上对应新增内容如下所示(仅供参)import logginglogging.basicConfig(levellogging.DEBUG,format%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s,datafmt%a, %d %b %Y %H:%M:%S,filename/var/log/aaa.txt,filemodea)
http://www.zqtcl.cn/news/448723/

相关文章:

  • 济宁建站公司wordpress博客入门
  • 做外贸需要网站wordpress app 打包
  • 免费网站站长查询丽水微信网站建设公司
  • 广州品牌网站建设先做网站 先备案
  • jsp系统网站建设带源代码梧州网页设计
  • 二手书籍交易网站开发方式关键词seo排名优化如何
  • 陕西西安潍坊网站seo外包
  • 计算机专业网站开发开题报告网站推广营销怎么做
  • 比较大的做网站的公司电影网站盗链怎么做
  • 江苏响应式网站建设哪里有台州网站制作方案
  • 深圳设计网站有哪些展览展会策划公司
  • 微信生活门户网站源码河北建设厅网站初始密码
  • 企业如何做网站推广成都外贸网站建设
  • 网页设计 网站建设 哪个好佛山网站建设推广服务
  • 东莞网站建设技术支持产品推广怎么写
  • 银川app购物网站制作公司网站建设怎样提升形象与品牌价值
  • 中山城市建设集团网站信誉好的邯郸网站建设
  • 做网站很赚钱吗贵阳网站建设费用
  • 设计网站的关键点用ps做招生网站
  • 制作网站公司服务器租赁一年的费用网页动画是如何制作出来的
  • 佛山网站优化有莱芜房产网新房
  • 西安英文旅游网站建设中国建筑工程门户商城
  • 山东企业建站软件购物网站是多少
  • 外链收录网站语音识别程序代做网站
  • 天津平台网站建设公司wordpress删除页头页尾
  • 网站加入站长统计wordpress设置手机浏览器
  • 服务器网站备案怎么做网站流量竞品分析
  • 四川省建设工程信息网站上海金融网站制作公
  • php7.2 wordpress黑帽seo软件
  • 网站后台cms做网站项目团队口号