Python烧瓶从Webhook中运行缓慢的功能,需要在5秒内做出响应



在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(来简化编排,例如重新启动组件或监视。

相关内容

最新更新