在Windows上运行。
这与问题python flask的问题相似 - 处理请求后运行脚本,但是答案不足。
给定代码:
app = Flask(__name__)
@app.route('/',methods=['POST'])
def processWebhook():
time.sleep(30) # slow_function()
return "received"
if __name__ == '__main__':
app.run()
我需要每个帖子的slow_function运行,但是它不能停止在5秒内返回的响应(例如,函数为time.sleep(30((。
另外,每个slow_function才能在完成之前才能启动。
有没有办法将"作业"添加到线性执行而不仅仅是调用slow_function的第二个线程?
您根本无法在Web服务器中运行长时间的运行过程,它们正在构建相反的操作并试图强迫它们执行此操作会导致毁灭。
最好的选择是将长运行函数卸载到单独的Python过程中。看看芹菜:http://www.celeryproject.org/您使用Redis/RabbitMQ和消费程序进行本土的工作。
您的要求,只能在所有三个功能中都可以实现一次。
可以实现。请注意,如果您使用此解决方案而不是一个过程,则至少有三个(WebServer,redis/RabbitMQ和您的消费者(,活动部件的数量会增加。由于精心策划了这很烦人,您可能需要使用Docker(和Docker-Compose(来简化编排,例如重新启动组件或监视。