低レベルの関数が高レベルの関数に再度呼び出すことでシグナルを送信するサーバーを構築しています。例えば:
def bar():
print('hello')
#run blah() again
def foo():
bar()
def blah():
foo()
blah()
過去の関数呼び出しを出力するtraceback.extract_stack()またはinspect.stack()メソッドを使用すると、私が探しているものに近づきます。つまり、bar()に到達したときに、それを知りたいのです。もともと、私はこれをすべて実行するためにblah()を呼び出しました。ただし、実際にblah()を再度呼び出す方法がわかりません。ところで、私は上記が単なる例である円形になることを理解しています。
また、関数を介して引数を返さないようにしたいです。これをすべて追跡するトレースバック/検査/トレーストリックがあることを期待しています。
@ThomasK、私が今何をしているのかについてもう少し背景(おそらくこれは完全に間違っていると思っています):1)さまざまなソース(つまりルート)から情報を取得し、一連の計算を行うサーバーがあります、次に、最終的なデータポイント(つまり、リーフ)を要求するクライアントに送信します2)クライアントは、「X、Y、Zが必要です」と言って要求を開始し、レイジーサーバーがそれを取得します3)その後、サーバーはルートを追跡し、「ルート」のいずれかが変更されると、影響を受けるすべての「リーフ」を自動的にプルして、クライアントに更新を送信します。上記の簡略化された例では、bar()はルートであり、blah()はクライアントにデータを送信するリーフです。
将来の開発をより柔軟にするために、何もハードコーディングせず、「データが変更されたら、すぐに行って全員にデータを再要求するように指示する」という基本的な前提を維持したいと思います。おそらく、これをカプセル化するパターンがあります。