5

ソケットで問題なく接続できますが、すべてがローカルの方がパイプの方が速いと聞いたので、試してみたかったのですが、接続できません。

私はLibreを始めます

 > soffice --headless --invisible --norestore --nodefault --nolockcheck --nofirstwizard --accept='pipe,name=ooo_pipe;urp;'

そして、動作するはずなのに動作しない最低限のPythonスクリプトは

import uno
from com.sun.star.connection import NoConnectException

pipe = 'ooo_pipe'
localContext = uno.getComponentContext()
resolver = localContext.ServiceManager.createInstanceWithContext("com.sun.star.bridge.UnoUrlResolver", localContext)
context = resolver.resolve("uno:pipe,name=%s;urp;StarOffice.ComponentContext" % pipe)
4

1 に答える 1

6

これまでソケットモードを使用してきました。cmd を使用して、自分のマシンでパイプをテストしました。

/usr/lib/openoffice/program/soffice.bin -accept='pipe,name=foo;urp;StarOffice.ServiceManager' -nologo -headless -nofirststartwizard -invisible

$ lsof -c soffice|egrep "pipe|foo"
soffice.b 6698 user    3r  FIFO                0,8      0t0 15766935 pipe
soffice.b 6698 user    4w  FIFO                0,8      0t0 15766935 pipe
soffice.b 6698 user   15u  unix 0xffff88009773ed00      0t0 15767001 /tmp/OSL_PIPE_1000_foo

lsof は、名前付きソケット foo と、Python で接続を取得するための OK があることを示しています。実験の開始時に、foo が生成されず、com.sun.star.connection.NoConnectException が発生する場合がありました。しかし、その後このエラーを繰り返すことはできません。

私たちはソケットモードのヘッドレス soffice を本番環境で数年間使用してきましたが、非常に安定しており、十分に高速です。ここでのパイプ モードはまだ UNIX ソケットに依存しているようです。そのため、ソケット モードを使用することをお勧めします。

于 2012-03-26T04:20:27.620 に答える