Python 将信息从一个uwsgi请求传递到另一个uwsgi请求?
我在uwsgi后面有一个python应用程序,它以ascync模式运行,以支持服务器发送的事件。应用程序在mysql数据库上执行各种任务。在SSE连接上,我希望能够在对数据库进行更改时实时发送事件 理想情况下,我希望在数据库更改时收到通知。搜索过之后,我没有找到任何不包括在触发器中启动外部进程的好解决方案。因为我不想在每次更改上都引入很大的开销,所以我目前的方法是只报告应用程序所做的更改,而不是在mysql shell或类似的应用程序中报告任何其他更改 SSE循环看起来像这样:Python 将信息从一个uwsgi请求传递到另一个uwsgi请求?,python,mysql,process,uwsgi,server-sent-events,Python,Mysql,Process,Uwsgi,Server Sent Events,我在uwsgi后面有一个python应用程序,它以ascync模式运行,以支持服务器发送的事件。应用程序在mysql数据库上执行各种任务。在SSE连接上,我希望能够在对数据库进行更改时实时发送事件 理想情况下,我希望在数据库更改时收到通知。搜索过之后,我没有找到任何不包括在触发器中启动外部进程的好解决方案。因为我不想在每次更改上都引入很大的开销,所以我目前的方法是只报告应用程序所做的更改,而不是在mysql shell或类似的应用程序中报告任何其他更改 SSE循环看起来像这样: def appl
def application(env, start_response):
start_response("200 OK", [('Content-Type', "text/event-stream")])
while True:
# wait for event somehow. using uwsgi.wait_fd_read()?
# parse event from other uwsgi process
# fetch new or updated data from database
# generate SSE-event
ev = ServerSentEvent()
yield ev.encode()
应用程序中修改数据库的其他部分如下所示:
def changeDatabase():
db.performQuery("update foo set .... ")
# Send some event to other uwsgi processes that foo table has been updated
我该怎么做?信号?uwsgi信号?共享内存?写入文件?还有其他我不知道的机制吗?你有什么建议吗?我个人倾向于使用redis pub/sub来做这类事情。它是快速、可靠和易于使用的。基本上,您的SSE应用程序开始等待发布/订阅频道,而您的django应用程序发布到该频道。uWSGI信号也很简单,但它们不携带某种形式的有效载荷,因此它们可能具有很大的局限性。只是为了增加更多的视角:任何解决方案都可以。