我是新手,探索如何在python中执行此操作。我想要做的是在特定时间每个工作日运行一个功能,例如在中国股票市场收盘前5分钟的14:55。该函数将从股票市场数据馈送API中提取一些数据并进行一些简单的计算以生成信号(-1表示空头,+1表示长,0表示不做任何事情)。我现在还没有发送信号进行交易。我只是每天将信号保存到本地文件中。因此,我可以收集信号2周或任何时候我想停止这个调度程序。
我注意到APScheduler
模块经常被建议。但我试过了,没有办法让调度程序在2周后停止运行。我只想找到一种方法来设置一个运行的调度程序,可能每10分钟运行一次,但是它会每10分钟继续运行一个指定的函数,并且无法通过编程方式停止,只能通过按Ctrl+C
?例如,我希望每隔10分钟运行一次功能6次,在APScheduler
中,我还没有看到指定“6次”#39;'论点。或者我想每10分钟运行一次功能,直到1小时后。我在1小时后没有看到'或者在16:30'争论要么。怎么做?
目前,我这样做:
def test_timer():
'''
Uses datetime module.
'''
running = 1
stop_time = datetime.now() + timedelta(seconds=60)
while running:
print('I\'m working...')
time.sleep(5)
running = datetime.now() < stop_time
print('Goodbye!')
编辑:我在Windows 10中使用python 3.6。
答案 0 :(得分:0)
对于Linux中的crontab或Windows中的任务计划程序来说,这似乎是个问题。
答案 1 :(得分:0)
试试这个例子
from datetime import datetime
from apscheduler.schedulers.background import BackgroundScheduler
def job_function():
print("Hello World")
sched = BackgroundScheduler()
# Schedule job_function to be called every 1 second
# FIXME: Do not forget to change end_date to actual date
sched.add_job(job_function, 'interval', seconds=1, end_date="2017-09-08 12:22:20")
sched.start()
更新#1
from apscheduler.schedulers.background import BackgroundScheduler
def job_function():
print("Hello World")
# Here, you can generate your needed days
dates = ["2017-09-08 13:30:20", "2017-09-08 13:31:20", "2017-09-08 13:32:20"]
sched = BackgroundScheduler()
for date in dates:
sched.add_job(job_function, "date", next_run_time=date)
sched.start()