Python计划在时间段之间的特定日期运行函数

时间:2018-12-13 22:24:24

标签: python function schedule

我有一个访问API的功能,可以在特定时间检查火车数据。实际上,每个旅程要运行3次,因此我需要在特定时间运行3次。

我尝试使用schedule模块来解决这个问题,但似乎无法正常工作。这是我当前的代码:

schedule.every().day.at("07:30").every(5).minutes.do(darwinChecker(train_station['home_station'], train_station['connect_station'], user_time['morning_time']))

但是我得到了AttributeError:'Job'对象没有属性'every'。文档指出,如果您的代码导入了错误的调度模块,则会发生这种情况,但是我没有使用该名称的其他文件。

我将如何运行我的函数,例如,每周五从07:30到08:40,每5分钟运行一次?

编辑:根据请求,添加我要执行的操作的完整代码:

import requests
import re
import schedule
import time
from darwin_token import DARWIN_KEY

jsonToken = DARWIN_KEY

train_station = {'work_station': 'bat', 'home_station': 'man', 'connect_station': 'wds'}
user_time = {'morning_time': ['0821', '0853'], 'evening_time': ['1733'], 'connect_time': ['0834', '0843']}


def darwinChecker(departure_station, arrival_station, user_time):
response = requests.get("https://huxley.apphb.com/all/" + str(departure_station) + "/to/" + str(arrival_station) + "/" + str(user_time), params={"accessToken": jsonToken})
    response.raise_for_status()    # this makes an error if something failed
data1 = response.json()
train_service = data1["trainServices"]
print('Departure Station: ' + str(data1.get('crs')))
print('Arrival Station: ' + str(data1.get('filtercrs')))
print('-' * 40)
try:
    found_service = 0  # keeps track of services so note is generated if service not in user_time
    for index, service in enumerate(train_service):
        if service['sta'].replace(':', '') in user_time:  # replaces sta time with values in user_time
            found_service += 1  # increments for each service in user_time
            print('Service RSID: ' + str(train_service[index]['rsid']))
            print('Scheduled arrival time: ' + str(train_service[index]['sta']))
            print('Scheduled departure time: ' + str(train_service[index]['std']))
            print('Status: ' + str(train_service[index]['eta']))
            print('-' * 40)
            if service['eta'] == 'Cancelled':
                # print('The ' + str(train_service[index]['sta']) + ' service is cancelled.')
                print('Previous train departure time: ' + str(train_service[index - 1]['sta']))
                print('Previous train status: ' + str(train_service[index - 1]['eta']))
    if found_service == 0:  # if no service is found
        print('The services currently available are not specified in user_time.')
except TypeError:
    print('There is no train service data')
try:
    # print('\nNRCC Messages: ' + str(data1['nrccMessages'][0]['value']))
    NRCCRegex = re.compile('^(.*?)[\.!\?](?:\s|$)')  # regex pulls all characters until hitting a . or ! or ?
    myline = NRCCRegex.search(data1['nrccMessages'][0]['value'])  # regex searches through nrccMessages
    print('\nNRCC Messages: ' + myline.group(1))  # prints parsed NRCC message
except (TypeError, AttributeError) as error:  # tuple catches multiple errors, AttributeError for None value
    print('There is no NRCC data currently available\n')


print('Morning Journey'.center(50, '='))
darwinChecker(train_station['home_station'], train_station['connect_station'], user_time['morning_time'])
# schedule.every().day.at("21:50").do()
# schedule.every(2).seconds.do(darwinChecker,train_station['home_station'], train_station['connect_station'], user_time['morning_time'])     

schedule.every().day.at("07:30").every(5).minutes.do(darwinChecker,train_station['home_station'], train_station['connect_station'], user_time['morning_time'])

while True:
        schedule.run_pending()
        time.sleep(1)

# print('Connection Journey'.center(50, '='))
# darwinChecker(train_station['connect_station'], train_station['work_station'], user_time['connect_time'])

# print('Evening Journey'.center(50, '='))
# darwinChecker(train_station['work_station'], train_station['home_station'], user_time['evening_time'])`

0 个答案:

没有答案
相关问题