python调度 - 如何避免无限循环?

时间:2017-03-16 04:55:25

标签: python scheduled-tasks

首先,我的代码在这里:

import schedule # see https://github.com/dbader/schedule
import crawler

def job():
    print("Start my scheduled job...")
    cw.run()

if __name__ == "__main__":
    cw = crawler.crawler()

    print("Initial crawling...")
    cw.run()

    schedule.every(10).seconds.do(job)

    while True:
        schedule.run_pending()
        for title, link in zip(cw.titles, cw.links):
            print("%s[%s]" % (title, link))

while循环中,我想在预定的作业完成后才执行for循环。

但是,for循环无限运行。

我知道为什么。但我不知道如何解决它。

任何人都可以帮助我吗?

2 个答案:

答案 0 :(得分:2)

这个怎么样?

def job():
    print("Start my scheduled job...")
    cw.run()
    for title, link in zip(cw.titles, cw.links):
        print("%s[%s]" % (title, link))

if __name__ == "__main__":
    cw = crawler.crawler()

    print("Initial crawling...")
    cw.run()

    schedule.every(10).seconds.do(job)

    while True:
        schedule.run_pending()

我刚将for循环移到job()

答案 1 :(得分:1)

我确信有更好的方法,但是如果只将for循环放在一个函数中,然后将schedule.run_pending()作为伪参数传递给它。像这样:

def foo(dummy):
    for title, link in zip(cw.titles, cw.links):
        print("%s[%s]" % (title, link))

while True:
    foo(schedule.run_pending())

我没有测试过这段代码,但我认为它应该可行。祝你好运。

相关问题