Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用nameko运行服务时如何停止初始类_Python_Nameko - Fatal编程技术网

Python 使用nameko运行服务时如何停止初始类

Python 使用nameko运行服务时如何停止初始类,python,nameko,Python,Nameko,大家好,这是我的一个项目示例,我想使用nameko运行测试:A, 我发现在运行此服务期间,类A将反复初始化。 实际上,我想连接到一个服务并重复做一些事情,我不想每次都初始化连接。那么有什么好的方法来解决这个问题吗 ###FileName:Test.py### from nameko.timer import timer import time class A: name = 'test' def __init__(self): self.a = 'a'

大家好,这是我的一个项目示例,我想使用
nameko运行测试: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)```
你可以试试:

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'
。否则,它就会这样做

如果这不是您想要的,您还可以将
设置为类变量,而不是实例变量

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')

Nameko服务是作为类实现的,但它们的行为与面向对象编程中的普通类不同

特别是,为每个工作者实例化该类,即每次触发入口点时。这就是为什么你一遍又一遍地看到“这个类已经初始化了”

通常,您不应该在Nameko服务类中使用构造函数


要管理服务的连接和一次性设置,您应该使用。

抱歉,它不起作用。下面是启动服务的结果:
test'A'对象没有属性'A'这个类已经初始化了这是一个nameko方法'A'对象没有属性'A'这个类已经初始化了这是一个nameko方法
似乎如果我使用@time属性,nameko将总是初始化这个类A你说它不工作是什么意思?创建A对象后是否无法调用A.A?在这种情况下,nameko将始终运行init并重新创建A.A。在我给出的第二个代码段中,它将运行init而不会重新创建A.A