我有多个分批运行的作业。批处理在某些时间运行。我希望仅在满足特定条件的情况下运行批处理中的作业。为此,我有条件函数。示例中有新数据可用或已运行从属作业。我的批处理对象将无法识别条件的变化。这让我觉得没有重新实例化。我对我对python的误解以及如何正确解决此问题感兴趣。
我试图将函数移入batch_runner函数的内部和外部,但没有成功。
class Batch():
def __init__(self,jobs):
self.job_dict = jobs
self.job_keys = sorted([key for key in jobs],reverse=False)
def run(self):
for jb_nm in self.job_keys:
if all(self.job_dict[jb_nm][1]):
print('Batch Oject Evaluates to:',all(self.job_dict[jb_nm][1]))
self.job_dict[jb_nm][0]()
else:
print('Batch Object Evaluates to False')
def job1():
print('did job 1')
def job_condition(test):
print("job_condition evaluates to:",test==1)
return test==1
def batch_runner(test,reset):
import schedule
from datetime import datetime
import time
print('restart: Test =',test)
batch1 = Batch(
{
1:[job1,[job_condition(test)]],
#2:[job2,[business_day()]],
#3:[job3,[file_exits()]]
}
)
schedule.every(10).seconds.do(batch1.run)
schedule.jobs
while datetime.today().strftime('%M') == reset:
schedule.run_pending()
time.sleep(1)
from datetime import datetime
test = 0 # change to another number to view object eval to False
while True:
test+=1
reset = datetime.today().strftime('%M')
batch_runner(test,reset)
答案 0 :(得分:0)
问题不是Batch对象。计划模块存储函数的每个实例。我猜这是关闭的例子吗?如果我错了纠正我。我使用schedule.clear()对batch_runner进行了更改以解决该问题
def batch_runner(test,reset):
import schedule
from datetime import datetime
import time
print('restart: Test =',test)
schedule.clear('batch1')
batch1 = Batch(
{
1:[job1,[job_condition(test)]],
#2:[job2,[business_day()]],
#3:[job3,[file_exits()]]
}
)
schedule.every(10).seconds.do(batch1.run).tag('batch1')
schedule.jobs
while datetime.today().strftime('%M') == reset:
schedule.run_pending()
time.sleep(1)