如何在Python / Django中启动长时间运行的线程

时间:2018-06-17 03:07:15

标签: python django multithreading schedule

我有一个监控购物车的代码,基于用户设置“how_often”(选项是每隔1,3或7天)。我通过schedule安排它

def startScheduleThread(how_often_setting,cart_id):

if how_often_setting==7:
    schedule.every().monday.do(monitor_cart, cart_id)
elif how_often_setting==3:
    schedule.every(3).days.at("10:30").do(monitor_cart, cart_id)
elif how_often_setting==1:
    schedule.every(1).day.do(monitor_cart, cart_id)
else:
    pass


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

这是一个长期运行的任务,我决定启动一个新线程(因此不会阻止主线程)

    how_often_setting = cart.how_often
    cart_id=cart.pk

    thread_obj = threading.Thread(target=startScheduleThread, args=[how_often_setting, cart_id])
    thread_obj.start()

关键是它在开发服务器上运行得非常好,但是一旦我上传到真实的服务器上 - 它什么都不做。

任何人都可以告诉我为什么它经常发生以及如何开始这么长时间的任务。提前谢谢

P.S。请不要建议芹菜

0 个答案:

没有答案