Pyro4を初めて使用しているので、Pyro4パッケージに含まれているサンプルを試してみるよりも良い方法がありますか?だから私の最初の動機は、単に一つの仕事をすることでした、それは例 "倉庫"です。アイデアは、人に倉庫を訪問させ、持ち物や店舗を選択させることです。 "warehouse.py"ファイルにはPyroデーモン情報が含まれ、 "visit.py"には人と倉庫間のやり取りが行われます。Pyro4シリアライズエラー:サポートされていないシリアライズクラス
ネームサーバ(私の場合は:pyro4-ns -n Hodor
で始まり、ホストファイルにC:\Windows\System32\drivers\etc
というエントリがあります)と "warehouse.py"が2つの別々のターミナルウィンドウで実行されている必要があります。私が3番目のターミナルウィンドウで "visit.py"経由で通信を開始するたびに、最初に動作し、何かを保存したいかどうかを私に尋ねます。
:私が行う場合、私はエラーメッセージを取得 "Pyro4.errors.SerializeError:サポートされていないシリアル化されたクラス:person.Visitor": "
from __future__ import print_function
import Pyro4
import person
class Warehouse(object):
def __init__(self):
self.contents=["chair","bike","flashlight","laptop","couch"]
def list_contents(self):
return self.contents
def take(self, person, item):
self.contents.remove(item)
print("{0} took the {1}.".format(person.name, item))
def store(self, person, item):
self.contents.append(item)
print("{0} stored the {1}.".format(person.name, item))
def main():
warehouse=Warehouse()
Pyro4.Daemon.serveSimple(
{
warehouse: "warehouse"
},
host = "Hodor",
ns=True)
if __name__=="__main__":
main()
ここ
File "visit.py", line 10, in <module>
janet.visit(warehouse)
File "C:\Users\RickJames\Pyro_other_machine\person.py", line 14, in visit
self.retrieve(warehouse)
File "C:\Users\RickJames\Pyro_other_machine\person.py", line 25, in retrieve
warehouse.take(self, item)
File "C:\Python34\lib\site-packages\Pyro4\core.py", line 171, in __call__
return self.__send(self.__name, args, kwargs)
File "C:\Python34\lib\site-packages\Pyro4\core.py", line 428, in _pyroInvoke
raise data
Pyro4.errors.SerializeError: unsupported serialized class: person.Visitor
は "warehouse.py" でありますperson.py ":
、最後に "" visit.py:
import sys
import Pyro4
import Pyro4.util
from person import Visitor
warehouse=Pyro4.Proxy("PYRONAME:warehouse")
janet=Visitor("Janet")
henry=Visitor("Henry")
janet.visit(warehouse)
henry.visit(warehouse)
私は、デフォルトでPyro4がシリアライザ "蛇"を使用していることを知っています。私は 'marshal'、 'json'、 'dill'、 'pickle'に切り替えようとしましたが、誰も私の問題を解決しませんでした。また、いくつかのシリアライザのセキュリティに関する問題をすべて読んだので、私は "蛇"を保ちたいと思います。
よろしくお願い致します。私はそのパッケージについてグーグルでサンプルを手に入れました。そして今あなたがそれを言いました - ディレクトリはPyro4-4.18と言います。 – RickJames