Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 将信息从一个uwsgi请求传递到另一个uwsgi请求?_Python_Mysql_Process_Uwsgi_Server Sent Events - Fatal编程技术网

Python 将信息从一个uwsgi请求传递到另一个uwsgi请求?

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

我在uwsgi后面有一个python应用程序,它以ascync模式运行,以支持服务器发送的事件。应用程序在mysql数据库上执行各种任务。在SSE连接上,我希望能够在对数据库进行更改时实时发送事件

理想情况下,我希望在数据库更改时收到通知。搜索过之后,我没有找到任何不包括在触发器中启动外部进程的好解决方案。因为我不想在每次更改上都引入很大的开销,所以我目前的方法是只报告应用程序所做的更改,而不是在mysql shell或类似的应用程序中报告任何其他更改

SSE循环看起来像这样:

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信号也很简单,但它们不携带某种形式的有效载荷,因此它们可能具有很大的局限性。

只是为了增加更多的视角:任何解决方案都可以。