Python 需要在restplus中发送响应2小时后执行方法

Python 需要在restplus中发送响应2小时后执行方法,python,flask,flask-restful,flask-restplus,Python,Flask,Flask Restful,Flask Restplus,在电子商务应用中,我的要求是,下订单后,在两小时后向卖方发送通知(执行方法) 2小时后自动执行该方法的最佳方式是什么?您可以使用芹菜在一定延迟后运行任务 你可以在这里了解更多 这将适用于python3 如果您熟悉asyncio,可以稍后使用事件循环调用函数 循环。稍后调用(延迟、回调、*args、上下文=None) 时间表 在给定延迟秒数后调用的回调(可以是 整数或浮点) 返回asyncio.TimerHandle的实例,该实例可用于 取消回拨 回调将只调用一次。如果计划了两次回调 就在同一时

在电子商务应用中,我的要求是,下订单后,在两小时后向卖方发送通知(执行方法)


2小时后自动执行该方法的最佳方式是什么?

您可以使用芹菜在一定延迟后运行任务

你可以在这里了解更多


这将适用于python3

如果您熟悉asyncio,可以稍后使用事件循环调用函数

循环。稍后调用(延迟、回调、*args、上下文=None)

时间表 在给定延迟秒数后调用的回调(可以是 整数或浮点)

返回asyncio.TimerHandle的实例,该实例可用于 取消回拨

回调将只调用一次。如果计划了两次回调 就在同一时间,它们被调用的顺序是 未定义

可选的位置参数将在调用时传递给回调 打电话。如果希望使用关键字参数调用回调函数 使用functools.partial()

可选的仅关键字上下文参数允许指定自定义 运行回调的上下文。当前的环境是 未提供上下文时使用

在版本3.7中更改:添加了仅上下文关键字参数。 详见PEP 567

在版本3.8中更改:在Python3.7和更早版本中使用默认值 事件循环执行时,延迟不能超过一天。这 已在Python 3.8中修复

例如:

导入异步IO
导入日期时间
def显示日期(结束时间,循环):
打印(datetime.datetime.now())
如果(循环时间()+1.0)<结束时间:
循环。稍后调用(1,显示日期,结束时间,循环)
其他:
loop.stop()
loop=asyncio.get\u event\u loop()
#安排第一次调用以显示_date()
结束时间=循环时间()+5.0
循环。尽快呼叫(显示日期、结束时间、循环)
#阻止被loop.stop()中断的调用
尝试:
loop.run_forever()
最后:
loop.close()

在我的生产代码中,我更喜欢APScheduler而不是芹菜,因为它提供了大量关于特定延迟或特定日期运行作业的设置(因此您只需将
timedelta(小时=2)
添加到
datetime.utcnow()

看看它:

谢谢你的提示。我现在将修复我的代码,看看它是否有帮助谢谢提示。我现在将修复我的代码,看看它是否有帮助
import asyncio
import datetime

def display_date(end_time, loop):
    print(datetime.datetime.now())
    if (loop.time() + 1.0) < end_time:
        loop.call_later(1, display_date, end_time, loop)
    else:
        loop.stop()

loop = asyncio.get_event_loop()

# Schedule the first call to display_date()
end_time = loop.time() + 5.0
loop.call_soon(display_date, end_time, loop)

# Blocking call interrupted by loop.stop()
try:
    loop.run_forever()
finally:
    loop.close()