2

サーバーの実行中にデータベースを開こうとするたびに、データベースが別のプロセスで既に開いているというエラーが表示されるサイトがあります。

pshell問題は、データベースをチェックするためにcronでスケジュールできるスクリプトがあること、またはサーバーの実行中に使用することさえできるスクリプトがあることです。

現在のところ、異なるプロセスからデータベースを開くことは不可能のようですが、ドキュメントには、データベースへの複数の接続が可能であると実際に記載されています。

この問題により、サーバーを含め、一度に1つのスクリプト/プロセスのみを実行する必要があります。

4

2 に答える 2

5

ZODBは、デフォルトの構成では、処理中のオブジェクトデータベースです。ただし、クライアントサーバーモデルを使用して、プロセス間で共有することはできます。

ここには3つのオプションがあります。

  • ZEOを使用して、ZODBストレージを共有するための専用プロセスを作成します。以前は、ピラミッド固有の手順でZODBをZEOで使用することに関するピラミッドクックブックのエントリがありましたが、2013年12月に古くなったために削除されたことを考慮に入れてください。私には、指示はまだかなり正確に見えますが、私はそれらをテストしていません。
  • RelStorageを使用して、オブジェクトデータベースをOracle、MySQL、またはPostgeSQLに格納します。
  • NEOを使用して、MySQLを分散バックエンドとして使用します。警告:このプラットフォームは(まだ)Python 3との互換性がありませんが、プロジェクトは(2018年11月の時点で)積極的に取り組んでいるため、これはカードに含まれている可能性があります。
于 2012-11-08T16:53:44.860 に答える
0

RelStorageを使用できます。

pip install RelStorage

...またはsetup.pyに追加するには、次のものが必要です。

requires = [
...
RelStorage',
]

セクション[app:main]のdeveloper.iniを変更します。

[app:main]
...
zodbconn.uri = zconfig://%(here)s/relstorage.conf

次の内容でファイル「relstorage.conf」を作成します。

%import relstorage
<zodb main>
  <relstorage>
    <postgresql>
      # The dsn is optional, as are each of the parameters in the dsn.
      dsn dbname='zodb' user='zodbuser' host='yourhostname.net' password='YOURpassowrd'
    </postgresql>
  </relstorage>
</zodb>

設定によると、「relstorage.conf」は「developer.ini」と同じフォルダーに配置する必要があります

于 2013-01-18T12:47:36.740 に答える