Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/337.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 工作单元由外部事件驱动。如何确保一台机组仅在前一台机组结束后启动?_Python_Twisted_Python 2.6 - Fatal编程技术网

Python 工作单元由外部事件驱动。如何确保一台机组仅在前一台机组结束后启动?

Python 工作单元由外部事件驱动。如何确保一台机组仅在前一台机组结束后启动?,python,twisted,python-2.6,Python,Twisted,Python 2.6,我不知道如何重构我的应用程序。我读过一些关于ChainedDefered的文章,但我不知道如何将该技术应用到我的情况中。欢迎提出任何建议 我使用第三方库来监控一些实时变化非常快的外部数据源。每当检测到更改时,库将在我的代码中调用回调函数。我的回调函数将依次从数据库中检索数据并执行一些处理 class MyApp(object): def start(self): for i in range(1, 1000): mycallback = CallB

我不知道如何重构我的应用程序。我读过一些关于ChainedDefered的文章,但我不知道如何将该技术应用到我的情况中。欢迎提出任何建议

我使用第三方库来监控一些实时变化非常快的外部数据源。每当检测到更改时,库将在我的代码中调用回调函数。我的回调函数将依次从数据库中检索数据并执行一些处理

class MyApp(object):
    def start(self):
        for i in range(1, 1000):
            mycallback = CallBackHandler(x, y, z)
            thirdPartyLib.subscribe(event_name + str(i), mycallback)

     reactor.start()


class CallBackHandler(object):
    def __init__(self, x, y, z):
         ....

    def getSomeDataAndDoSomething(self):
        ...

    def __call__(self)
       callLater(self.getSomeDataAndDoSomething)
问题是,当事件在很短的时间间隔内快速发生时,CallBackHandler可以连续调用多次。如果这些回调或多或少同时执行,它们将产生相同的结果

如果最后一次回调已完成处理,如何启动回调?我更喜欢使用twisted中提供的构造来实现它,而不是,比如,通过比较事件的时间戳(如果它在1秒前被触发,那么就删除回调)或全局变量作为标志。

请以后再使用

如果您想执行延迟的
——以有限的并发级别返回,Twisted包含一个名为的类,您可以使用它

2006年,让·保罗·卡尔德隆(Jean-Paul Calderone)写了一篇伟大的文章。

请在将来写

如果您想执行延迟的
——以有限的并发级别返回,Twisted包含一个名为的类,您可以使用它

2006年,让·保罗·卡尔德隆写了一篇伟大的文章