我有安排直通工作apscheduler 到目前为止,我有3个工作,但很快就会有更多工作。 我正在寻找一种扩展我的代码的方法。

当前,每个作业都是其自己的.py文件,在该文件中,我已将脚本转换为以run()作为函数名称的函数。 这是我的代码。

from apscheduler.scheduler import Scheduler
import logging

import job1
import job2
import job3

logging.basicConfig()
sched = Scheduler()

@sched.cron_schedule(day_of_week='mon-sun', hour=7)

def runjobs():
    job1.run()
    job2.run()
    job3.run()    

sched.start()

这行得通,现在代码只是愚蠢的,但是可以完成工作。 但是当我有50个工作时,代码会很愚蠢。 如何缩放?

注意:作业的实际名称是任意的,并且不遵循模式。 该文件的名称为scheduler.py ,我在python shell中使用execfile('scheduler.py')运行该execfile('scheduler.py')

===============>>#1 票数:5 已采纳

import urllib
import threading
import datetime

pages = ['http://google.com', 'http://yahoo.com', 'http://msn.com']

#------------------------------------------------------------------------------
# Getting the pages WITHOUT threads
#------------------------------------------------------------------------------
def job(url):
    response = urllib.urlopen(url)
    html = response.read()

def runjobs():
    for page in pages:
        job(page)

start = datetime.datetime.now()
runjobs()
end = datetime.datetime.now()

print "jobs run in {} microseconds WITHOUT threads" \
      .format((end - start).microseconds)

#------------------------------------------------------------------------------
# Getting the pages WITH threads
#------------------------------------------------------------------------------
def job(url):
    response = urllib.urlopen(url)
    html = response.read()

def runjobs():
    threads = []
    for page in pages:
        t = threading.Thread(target=job, args=(page,))
        t.start()
        threads.append(t)

    for t in threads:
        t.join()

start = datetime.datetime.now()
runjobs()
end = datetime.datetime.now()

print "jobs run in {} microsecond WITH threads" \
      .format((end - start).microseconds)

===============>>#2 票数:1

看@

http://furius.ca/pubcode/pub/conf/bin/python-recursive-import-test

这将帮助您导入所有python / .py文件。

例如,在导入时,您可以创建一个列表,其中保留了一个函数调用。

[job1.run(),job2.run()]

然后遍历它们并调用函数:)

感谢Arjun

  ask by jason translate from so

未解决问题?本站智能推荐:

1回复

运行太多作业时python apscheduler不一致

我正在使用使用python apscheduler.scheduler的调度程序,并且在我的项目中,正在运行的作业太多,但是机器负载并不太高,在查阅了文档之后,我得出了解决方案,我必须增加线程的大小,但我不知道如何增加线程我的语法:
2回复

如何设置Python apscheduler运行作业每天9,11,14,17,18时钟

我正在使用Python apscheduler处理期间任务,我希望代码在每天的9:00,11:00,16:00,17:00执行,这里是作业的示例代码: 它工作,但重复四次代码似乎很愚蠢,所以我的问题是如何使代码简短设置功能运行在每天9:00,11:00,16:00,17:00?
1回复

每月第n天运行一次APScheduler作业

我正在寻找一个APScheduler触发器,该触发器将在每月的第n天执行一次作业。 例如,我想在每个月的第一个星期二工作。 或在每个月的第一个和第三个星期一。 有没有人能做到这一点的触发器? 您几乎可以使用cron调度程序执行此操作,并让您的函数仔细检查它是否在正确的时间运行: Cr
1回复

删除作业后,Python APSCheduler引发异常

我在redis中添加作业,并且在作业完成时添加了事件处理程序。 在eventhandler中,我要返回的值是基于从作业存储中删除作业ID的。 它已成功删除,但立即引发异常。 码 例外
1回复

从另一个.py文件方法停止apscheduler作业

我正在一个函数中创建一个apscheduler作业,在before_first_request()中的一个烧录应用程序中调用此函数。 此作业每30秒触发一次函数(在我的烧瓶应用程序中的另一个.py文件中)。 基于一个特定的结果(来自另一个.py文件),我必须终止这个apscheduler作业
2回复

APScheduler在Tornado Python中运行异步功能

我正在尝试开发一个小型应用程序,它将从API收集天气数据。 我已经使用APScheduler每隔x分钟执行一次功能。 我使用Python Tornado框架。 我得到的错误是: 我认为这是来自GetWeather()的协程,因为如果我从其中删除所有asycn功能,它将起作用。
1回复

尝试从Jobstore获取作业时,APScheduler python崩溃

我有可以通过APScheduler执行任务的工作人员。 它在第一天运行完美,然后在尝试获取下一个作业时崩溃。 发生此类异常后,我可以做些重试吗? 或者更好地防止这种情况发生? 这是调度程序代码: 这是我的日志:
1回复

重新启动后APScheduler作业未运行

我尝试APS的MongoJobStore 示例 。 示例代码为: 首先进行测试,我运行了代码,并将alarm方法的输出打印在控制台上。 然后,为了测试mongo的使用,我做了以下工作: 运行该示例并在执行作业之前将其停止。 这在数据库中创建了以下条目 然后,
1回复

计划作业功能在python的APScheduler库中多次调用

我在python的apscheduler库中遇到了意外的行为。 在这里,我有一个简单的代码将基本功能称为: 在这里,我有一个打印简单字符串的函数,我想将此调用为my_job,所以我使用调度程序调用了my-func作为 该程序将在每分钟的第三秒内调用所需的功能。 它输出多个
3回复

设置为同时运行作业时,APScheduler作业会运行多次

我想使用APScheduler和cron格式计划和运行作业。 假设我用两个不同的工作ID进行了两次。 有两个作业,设置为完全同时运行。 只需一项工作,它就会按预期运行一次。 有两个作业,它运行4次。 其他触发器(例如DateTrigger)也会发生相同的情况。 请注意,这是在Flask应用中设