如何解决使用“SCHEDULE”为初学者启动 Python 作业
我从未编写过 cron 作业或使用 python 中的“SCHEDULE”函数来自动运行程序。所以,我需要一些指导。我的程序运行良好,我需要它在每个月的第 15 天运行 - 所以每年 12 次。我试图通过设置 schedule.every().day.at("7:30").do(job) 来运行它作为测试,但什么也没发生。换句话说,代码没有运行,因为我在 7:30 下面配置了它。同样,我需要它在每个月的第 15 天运行。我是否需要重新排列我的代码(行)部分以使这个脚本按预期自动运行?谢谢,
我的代码如下:
import psycopg2
import pandas as pd
from sys import exit
from tabulate import tabulate
import schedule
import time
#schedule
def job():
print("I'm working...")
schedule.every().month.at("15").do(job)
while True:
schedule.run_pending()
time.sleep(1)
from datetime import datetime
start_time = datetime.now()
pd.set_option('display.max_columns',None)
#My code runs below from here....
代码未显示
end_time = datetime.now()
print('Duration: {}'.format(end_time - start_time))
exit()
解决方法
您的代码的预定部分在作业功能中。所以不要把只能执行一次的动作放在里面(比如pd.set_option
或import
)
import psycopg2
import pandas as pd
from sys import exit
from tabulate import tabulate
import schedule
import time
from datetime import datetime
pd.set_option('display.max_columns',None)
#schedule
def job():
print("I'm working...")
#Put your code here
start_time = datetime.now()
# Some more code
end_time = datetime.now()
print('Duration: {}'.format(end_time - start_time))
schedule.every().month.at("15").do(job)
while True:
schedule.run_pending()
time.sleep(1)
您应该删除 exit()
,因为它会在一次执行后终止您的进程。
但在您的情况下,我怀疑您是否希望全年都有一个 python 进程来触发每个月的操作。使用 unix crontab 执行您的 python 脚本似乎更合适,您可以从代码中删除所有调度逻辑。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。