def interval_trigger_Days(func,s,id,name): ''' 按天计算 ''' scheduler.add_job(func, trigger=interval.IntervalTrigger(days=s), id=id,name=name) def Interval_Trigger_Cron(func,id,name,day=None,hour=None,minute=None): ''' 固定周期 ''' if hour == None:hour='20-23' if minute == None:minute = None if day == None:day = '1st fri' trigger = CronTrigger(month='1-12', day=day, hour=hour,minute=minute) scheduler.add_job(func, trigger=trigger,id=id,name=name) def Interval_Trigger_Cron_Minutes(func,times,name): ''' 按分钟计算 ''' scheduler.add_job(func, trigger=interval.IntervalTrigger(minutes=times), id='%s'%func, name=name)
时间: 2024-02-07 07:02:56 浏览: 33
这是一段 Python 代码,代码中定义了三个函数:`interval_trigger_Days`、`Interval_Trigger_Cron` 和 `Interval_Trigger_Cron_Minutes`,它们都是用来设置定时任务的触发器的。第一个函数是按天计算触发器,第二个函数是固定周期触发器,第三个函数是按分钟计算触发器。这些函数都使用了`apscheduler`库来实现定时任务。
相关问题
所以报错这样是正常的对吗from apscheduler.schedulers.blocking import BlockingScheduler from apscheduler.events import EVENT_JOB_EXECUTED, EVENT_JOB_ERROR import datetime import logging logging.basicConfig(level=logging.INFO, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', datefmt='%Y-%m-%d %:H%M%S', filename='log1.txt', filemode='a') logging.FileHandler(encoding='utf-8', filename='log1.txt') def aps_test(x): print(datetime.datetime.now().strftime('%Y-%m-%d %:H%M%S'), x) def date_test(x): print(datetime.datetime.now().strftime('%Y-%m-%d %:H%M%S'), x) print(1/0) def my_listener(event): if event.exception: print('出错??????') else: print('正常///////////') scheduler = BlockingScheduler() scheduler.add_job(func=date_test, args=('一次性出错任务',), next_run_time=datetime.datetime.now()+datetime.timedelta(seconds=15), id='date_task') scheduler.add_job(func=aps_test, args=('循环任务',), trigger='interval', seconds=3, id='interval_task') scheduler.add_listener(my_listener, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR) scheduler._logger=logging scheduler.start()
这个报错是因为在logging.basicConfig()方法中,有一个格式字符串的语法错误,即datefmt参数的格式字符串中有一个“%”符号后面没有跟任何字符,应该把它改成“%H”。正确的格式字符串应该是'%Y-%m-%d %H:%M:%S'。修改后的代码如下:
```python
from apscheduler.schedulers.blocking import BlockingScheduler
from apscheduler.events import EVENT_JOB_EXECUTED, EVENT_JOB_ERROR
import datetime
import logging
logging.basicConfig(level=logging.INFO,
format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
datefmt='%Y-%m-%d %H:%M:%S', # 修改这里的格式字符串
filename='log1.txt',
filemode='a')
logging.FileHandler(encoding='utf-8', filename='log1.txt')
def aps_test(x):
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), x)
def date_test(x):
print(datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), x)
print(1/0)
def my_listener(event):
if event.exception:
print('出错??????')
else:
print('正常///////////')
scheduler = BlockingScheduler()
scheduler.add_job(func=date_test, args=('一次性出错任务',),
next_run_time=datetime.datetime.now()+datetime.timedelta(seconds=15),
id='date_task')
scheduler.add_job(func=aps_test, args=('循环任务',), trigger='interval', seconds=3, id='interval_task')
scheduler.add_listener(my_listener, EVENT_JOB_EXECUTED | EVENT_JOB_ERROR)
scheduler._logger=logging
scheduler.start()
```
注意:如果你在使用这段代码时,日期时间格式不需要秒数,可以将datefmt参数改为'%Y-%m-%d %H:%M'。
scheduler.add_job 参数含义
scheduler.add_job()是APSchedulers中添加任务的方法,其参数含义如下:
1. func:要运行的函数
2. trigger:触发器,指定函数运行的时间间隔,可以是:
- date:在指定的日期和时间运行一次
- interval:在指定时间间隔内运行
- cron:使用Cron表达式运行
3. args:传递给函数的参数,以元组或列表的形式传递
4. kwargs:传递给函数的关键字参数,以字典的形式传递
5. id:任务的唯一标识符,如果没有提供,将自动生成一个
6. name:任务的名称,可选参数
7. misfire_grace_time:允许调度程序在错过触发时延迟的时间
8. coalesce:如果设置为True,则如果任务的下一次运行时间与先前的运行时间重叠,则将其合并为单个运行
9. max_instances:允许同时运行的最大实例数
10. next_run_time:下一次运行时间,如果没有提供,将使用触发器计算
例如,以下是添加一个每天执行的任务的示例:
```
def job():
print('Function running at', datetime.now())
scheduler = BlockingScheduler()
scheduler.add_job(job, 'interval', days=1)
scheduler.start()
```
这个任务将每天运行一次,因为我们使用了“interval”触发器,并指定了“days=1”。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)