嗨,这里是我的项目的一个例子,我想使用nameko run Test:A,并且我发现在运行这个服务期间,类A将是重复的。实际上,我想连接到一个服务并做一些重复的事情,我不想每次都初始化连接。有什么好办法解决这个问题吗?
###FileName:Test.py###
from nameko.timer import timer
import time
class A:
name = 'test'
def __init__(self):
self.a = 'a'
print('this class has been init')
@timer(interval=0)
def test(self):
try:
print('this is a nameko method')
except:
pass
time.sleep(1)
@timer(interval=2)
def test2(self):
try:
print('second nameko method')
except:
pass
time.sleep(3)```发布于 2019-10-29 08:57:05
Nameko服务是作为类实现的,但在面向对象编程方面,它们的行为并不像普通类。
特别是,为每个工作人员实例化类,即每次入口点触发时都实例化类。这就是为什么你一遍又一遍地看到“这门课一直在里面”的原因。
通常,您不应该在Nameko服务类中使用构造函数。
若要管理服务的连接和一次性设置,应使用DependencyProvider。
发布于 2019-10-29 05:32:13
你可以试试:
class A:
name = 'test'
def __init__(self):
try:
self.a
except Exception as e:
print (e)
self.a = 'a'
print('this class has been init')这将检查self.a是否已经在作用域中,如果是,它将不会将其分配给'a'。否则,它就会这样做。
如果这不是您想要的,您还可以使a成为类变量而不是实例变量。
class A:
name = 'test'
def __init__(self):
try:
A.a
print (A.a) #nothing
except Exception as e:
print (e)
A.a = 'a'
print (A.a) #created
print('this class has been init')https://stackoverflow.com/questions/58601264
复制相似问题