私たちのプロジェクトでは、同期アプリケーション(短命)と非同期のTwistedアプリケーション(長寿命)があります。私たちはデータベースを再構築しており、そのモジュールのすべてのSQLをデカップリングするAPIモジュールを構築しようとしています。このAPIを作成して、同期アプリケーションと非同期アプリケーションの両方で使用できるようにしたいと考えています。同期アプリケーションの場合は、MySQLdbを使用するのと同じように、データベースAPIへの呼び出しがちょうどデータを返すようにしたいのですが、非同期アプリケーションの場合は、同じAPI関数/メソッドを非ブロックにすることを望みます延期された誰でも私にこれを提供するためのヒント、提案、または助けがありますか? ありがとうございます。 DougPython Twistedとデータベース接続
答えて
continuation-passing styleからページを借りることを検討しましたか?スタックレスPython supports continuations directlyを使用している場合、その方法はすでにgained some interestであるようです。
twisted.enterprise.adbapiあなたの要件に合致しないと思われますか?その場合、理由を説明してください。
Twistedの中では、基本的には、Deferred(Twisted DBレイヤーなど)を返し、その結果を待ってそれらを返す関数のラッパーが必要です。しかし、それはあなたの反応炉サイクルを使い果たしているので、ビジー待機することはできません。また、Twisted non-blocking待ちを使用して完了するタスクをチェックすることはおそらく非効率です。
インラインコールバックまたはdeferredGeneratorで問題を解決できますか?彼らはモダンなツイステッドが必要です。 See the twistedmatrix docs。
def thingummy():
thing = yield makeSomeRequestResultingInDeferred()
print thing #the result! hoorj!
thingummy = inlineCallbacks(thingummy)
別のオプションは、同じSQLテンプレート、runInteraction、ブロック、および繰延返しによってRunQueryを、使用して1つを使用するものを実行する2つのメソッドを持っているだろうが、それはやるより多くのコードパスを伴うだろう同じこと。
私が見たすべてのデータベースライブラリは、頑強に同期しているようです。
Twisted.enterprise.abapiはスレッドを使用して接続プールを管理し、基盤となるデータベースライブラリをラップすることでこの問題を解決しているようです。これは明らかに理想的ではありませんが、うまくいくと思いますが、実際に試したことはありません。
理想的には、sqlalchemyとツイストを統合する方法があります。私はこのプロジェクト、nadbapiを見つけましたが、2007年以来更新されていないようです。
- 1. Python 3.6とOracleデータベースの接続
- 2. Pythonとの私のデータベース接続のインポート
- 3. PythonでMongoデータベースに接続
- 4. Pythonの接続Oracleデータベース
- 5. Twisted server接続でTLSがハングアップする
- 6. データベース接続とsave_click
- 7. のpython 3.6のSQLデータベース接続
- 8. PythonでTwistedライブラリを使用してサーバーに外部接続できません
- 9. データベースとiPhoneアプリケーションの接続
- 10. クリスタルラングとデータベース接続プール
- 11. データベース接続プーリングとconnection.close()
- 12. データベース接続とF#が
- 13. データベース接続mysqlとSpringフレームワーク
- 14. GitlabデータベースとPgadminの接続
- 15. Javaアプレットとデータベース接続
- 16. ASP.NETデータベース接続とクエリ
- 17. SQLデータベースとのAndroid接続
- 18. Azureモバイルアプリケーションとデータベース接続
- 19. NodeJSクラスタとデータベース接続
- 20. MSSQLデータベースとの接続
- 21. MySQLデータベースとASP.NETグローバル接続
- 22. PHPとMySQL "データベース接続"
- 23. データベースとのReactJS接続
- 24. データベースとのフレックス接続
- 25. ネイティブデータベースとODBCデータベースの接続
- 26. H2データベースとのJPA接続
- 27. PHPとMySQLのデータベース接続
- 28. ASP.Net MVCとデータベース接続
- 29. データベースとのJPA接続エラー
- 30. SQLiteデータベースとの接続