私はblinkerライブラリ(または多分どんなライブラリでも)でこれらの仕事をすることができるのだろうかと思っています。Python - この目的のために点滅ライブラリを使用できますか?
- 私はフラスコを使用してWebアプリケーションを実行すると、このアプリケーション(多分
app.py
)内に、私はが(例えばblinker.signal('updated')
)を更新という名前のシグナルを定義します。 - 別のプロセスでは、更新された信号にの任意の関数(私は
subscriber
と呼ぶ)を接続(登録)します。このプロセスはデーモンのように永遠に実行されます。 - ウェブ側で更新が発生するたびに、私は
subscriber
関数を呼びたいと思います。
だから私はいくつかのコードを書いた:
app.py(フラスコアプリケーション)
from flask import Flask
from blinker import signal
app = Flask(__name__)
updated = signal('updated')
@app.route('/update')
def update():
updated.send('nothing')
return 'Updated!'
background.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)
としたWebアプリケーションを実行しましたflask run
コマンド。今私がlocalhost:5000/update
にアクセスすると、ブラウザにUpdated!
というメッセージが表示されますが、他のプロセスからメッセージAn update occurred on the web side!
が表示されません。
私のアプローチは間違っていますか?そうであれば、私はどのようにそのような仕事をすることができますか?あなたの答えを待って、ありがとう。
ああ、私はその説明を忘れてしまった。あなたの明確な答えと良い提案をありがとう! – hallazzang