問題タブ [neo4j-bolt]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python-3.x - コンテキストの切り替え後に Python neo4j ボルト ドライバーが接続を失う
私は、neo4jボルトドライバーを使用してneo4jグラフdbと通信するdjangoで書かれたバックエンドを持っています。
シングルトンを使用して接続を処理し、接続が最初に確立された場所とは別の場所からアクセスするたびに、ボルトドライバーが接続を閉じます (たとえば、ビューで接続を開き、シグナルでアクセスし、ビューに保存すると、接続が失われます)。
私が思いついた主な問題を抽出して、以下の小さなコード例に分解しようとしました。
動作の説明、またはより良い解決策をいただければ幸いです;)
実装の詳細: ドライバーの接続、セッション、およびトランザクションをカプセル化するラッパー オブジェクト "GraphMapper" があります。シングルトンインスタンスとして設計されています。トランザクションはポイント (A、ビューなど) で確立されますが、ここでトランザクションを完了できません。場所から追加の値を追加する必要があります (B、たとえば apost-save
信号)。ただし、「GraphMapper」A から B への参照を渡すことはできません。したがって、上記で説明したシングルトン実装を思いつきました。シングルトンがすべての場所で (1 つの要求内で) まったく同じインスタンスであることを確認しました。しかし、メソッド呼び出しを介してコンテキスト (パッケージ、クラス、またはメソッド) を終了し、次の場所で「GraphMapper」インスタンスを取得すると、接続が閉じられます。「GraphMapper」への参照カウントとその接続も確認しましたが、ガベージコレクターはそれを削除しないでください。接続が閉じられていないと言うことはめったにありません。ただし、グラフに書き込むと、接続拒否エラーが発生します。
PS: 役に立たない不要なコードがあることはわかっています。これは説明のみを目的としており、ガベージ コレクターが一部のオブジェクトを強制終了しないようにしたかったのです。
c# - Neo4j IDriver で Dispose() を呼び出す場所はいつですか?
私は ac# サービスからノードとリレーションシップを作成していますが、いつ dispose を呼び出すのが理想的かわかりません。Neo4j ノードを作成する 3 つのメソッドと、関係を作成する 2 つのメソッドがあります。これらは次々に呼び出されます。各メソッドは、新しいドライバーを作成します。(各方法で新しいドライバーを作成しないのが最善ですか?)
各メソッドは、一般的に以下のコードの抜粋のように見えます。
(各メソッドの最後で Dispose() を呼び出すとエラーが発生するため、そこには配置したくありません。最初に持っていたものを示して、配置するのに最適な場所についてアドバイスを求めているだけです。)