我有一个项目,用户将从android / web发送音频文件到服务器。 我需要在服务器上执行语音处理,并在android / web上将一些文件返回给用户。然而,服务器端将使用Python完成。 请指导我如何做到这一点?
答案 0 :(得分:0)
除了您的Web应用程序,您还可以拥有一个需要运行的任务队列以及要运行和跟踪这些任务的工作进程。当Web请求需要在后台启动任务,签入任务或获取任务结果时,这是一种流行的模式。可以在Task Queues section of the Full Stack Python open book中找到对此模式的介绍。 Celery和RQ是两个流行的项目,它们提供任务队列管理,可以插入现有的Python Web应用程序,例如使用Django或Flask构建的应用程序。
完成任务管理后,您必须决定如何让用户了解任务状态的最新信息。如果您不得不仅使用RPC样式的Web服务调用,那么您可以通过调用您已创建检查的Web服务来让客户端(例如Android或浏览器)轮询状态通过任务队列管理器的API完成任务。
如果您希望更快地通知用户或希望减少持续轮询的浪费开销,请考虑提供websocket。通过websocket连接,客户端可以订阅事件通知,例如完成语音到文本作业。 Autobahn|Python library提供用于实现websockets的服务器代码以及对顶层协议的支持,称为 WAMP ,可用于传递订阅和消息或调用服务。如果您需要坚持使用Django,请考虑改为django-websocket-redis。