我想知道我是否可以使用blinker 库(或者任何库)来完成这些工作。
- 我使用 Flask 运行一个 Web 应用程序,在这个应用程序中(也许
app.py
),我定义了一个名为updated的信号(例如blinker.signal('updated')
)。 - 在一个单独的过程中,我将任何函数(我将调用它
subscriber
)连接(订阅)到更新的信号。这个过程就像一个守护进程一样永远运行。 - 每当Web 端发生更新
subscriber
时,我都希望调用该函数。
所以我写了一些代码:
app.py(Flask 应用程序)
from flask import Flask
from blinker import signal
app = Flask(__name__)
updated = signal('updated')
@app.route('/update')
def update():
updated.send('nothing')
return 'Updated!'
背景.py
import time
from app import updated
@updated.connect
def subscriber(*args, **kwargs):
print('An update occurred on the web side!')
while True:
print('Waiting for signals...')
time.sleep(1)
flask run
并使用命令运行 Web 应用程序。现在当我访问时localhost:5000/update
,我可以Updated!
在浏览器中看到消息,但我看不到An update occurred on the web side!
来自其他进程的消息。
我的方法错了吗?如果是,我怎么能做这样的工作?等待您的答复,谢谢。