想象一下,您必须编写仅限于单个 URL 的网站来接收来自您的用户的短信,只有他们的 IP 地址来识别他们。您的网站会回复一条短信。这或多或少是我的设计约束。我有一个WSGI
应用程序,它只有一个接收请求的入站语音 URL,每个请求都包含一个语音记录和源电话号码。它使用要进行语音合成的脚本来响应每个请求。当然,会话信息比平时更重要,因为只有一个 URL。这远非“无国籍”。
所以这不是你的普通WSGI
/ greenlet
/ asyncio
/ aiohttp
/pytransitions
等。情况。
我宁愿不重新发明轮子,所以我的问题是如何避免这种情况,因为在我简化应用程序的重新架构时,我正在考虑的是一个单一的 URLWSGI
服务器,其工作方式如下:
每次(文本、电话)对到达
WSGI
URL 时,我都会在表格中查找该电话的现有会话进程。如果我没有找到,我分叉一个。有了(PID,套接字),我向进程发送文本消息,并让它通过写入套接字以响应文本消息响应SIP
连接上的语音合成。在会话进程内部,所有会话状态都存储为一个普通的 Python 进程,以便调用堆栈可以处理菜单层次结构(以及其他层次结构状态)。所有的工作流/交互对话都被处理,
asyncio
awaitables
其中一个菜单被简单地打印出来,然后该过程执行await
一个函数,该函数将用户的口头响应作为脚本返回。在 awaited 函数中,可能有一些额外的函数允许说出全局活动关键字(如“菜单”或“帮助”)以保持代码因素。
这是什么类型的 WSGI 服务器?