解決策は、DBの代わりにPyro4を使用し、不要にすることです。
Tracker.py
import Pyro4
@Pyro4.expose
@Pyro4.behavior(instance_mode="single")
class Tracker(object):
def __init__(self):
self._id = None
def setId(self, value):
print "set well :)", value
self._id = value
print self._id
def getId(self):
print "returning", self._id
return self._id
daemon = Pyro4.Daemon()
uri = daemon.register(Tracker)
print("URI: ", uri)
daemon.requestLoop()
Status.py
import Pyro4
class Status(object):
def __init__(self, id):
self._id = id
self._pyro = None
def connect(self, target):
self._pyro = Pyro4.Proxy(target)
def updateId(self):
if (not self._pyro is None):
self._pyro.setId(self._id)
print "updated"
else:
print "please connect"
def getId(self):
if (not self._pyro is None):
return self._pyro.getId()
else:
print "please connect"
Success.py
from Status import *
class Success(Status):
def __init__(self):
super(Success,self).__init__(1)
Wait.py
from Status import *
class Wait(Status):
def __init__(self):
super(Wait,self).__init__(1)
:あなたは、次のコードを使用することができますもちろん
Error.py
from Status import *
class Error(Status):
def __init__(self):
super(Error,self).__init__(3)
run.py
from Success import *
from Wait import *
from Error import *
#just an example
s = Success()
w = Wait()
e = Error()
s.connect("PYRO:[email protected]:51464")
s.updateId()
print s.getId()
w.connect("PYRO:[email protected]:51464")
w.updateId()
print s.getId()
e.connect("PYRO:[email protected]:51464")
e.updateId()
print s.getId()
ますが、別のURIを使用する必要があるだろうが、あなたは今、良いアイデアを持っている必要があります。 Pyroを使用して、必要に応じて静的URI名を指定することもできます。
$ c:\Python27\python.exe run.py
updated
1
updated
2
updated
3
HTH
しかし、それは右の三つの異なるテーブルを使用可能です:
出力はすべきですか?リクエスト用に1つ、レスポンス用に1つ、エラー用に1つを使用します。 –
はい。各テーブルに自動インクリメントの整数プライマリキーがあることを確認してください。 – shanmuga