代码之家  ›  专栏  ›  技术社区  ›  CoXier

Python计划在烧瓶中不起作用

  •  1
  • CoXier  · 技术社区  · 7 年前

    我正在导入 Schedule 进入 Flask . 我的项目包含 WSGI 然而,我对两者之间的关系知之甚少 瓶子 WSGI公司 . 现在我有三个主要文件:

    • wsgi.py :由其他工具自动生成。
    • app.py :我将客户端请求放在此处。
    • test.py :用于测试 日程 .

    我想在服务器启动时启动一个长任务。以下是 wsgi。py公司 :

    # -*- coding: utf-8 -*-
    from threading import Thread
    import test
    
    
    t = Thread(target=test.job)
    t.start()
    
    if __name__ == '__main__':
        ...
    

    正如你所看到的,我启动了一个线程,让工作在其中进行。这是我的 测验py公司 .

    import schedule
    
    
    def job():
        schedule.every(1).seconds.do(pr)
    
    
    def pr():
        print("I'm working...")
    

    我的问题是 job 从不启动。

    1 回复  |  直到 7 年前
        1
  •  1
  •   CoXier    7 年前

    我发现了我的问题。我从不让时间表执行作业。现在 wsgi.py 看起来像这样。

    # -*- coding: utf-8 -*-
    from threading import Thread
    import test
    
    schedule.every(1).seconds.do(test.job)
    t = Thread(target=test.run_schedule)
    t.start()
    
    if __name__ == '__main__':
        ...
    

    test.py :

    import schedule
    import time
    
    start_time = time.time()
    
    
    def job():
        print("I'm working..." + str(time.time() - start_time))
    
    
    def run_schedule():
        while True:
            schedule.run_pending()
            time.sleep(1)
    

    为了在单独的线程中工作,我创建了一个线程,并在这个线程中每隔1ms循环一次。在回路中, schedule 援引 run_pending 调用 job 如果超时(我的情况是1s)。