我有一个程序,不断从数据库获取数据,然后处理数据,然后通过FTP将其上传到服务器。它看起来像:
feed = connect2database()
for data in feed.changes():
data = process(data)
ftpUpload(data)
这里的问题是ftp上传可能永远挂起,这将导致程序挂起。我想实现一种在子进程中执行上载的方法,为每个进程设置一个超时,如果有一个超时,就终止它。我不需要从子进程中获取任何数据,也不需要在上载失败时重试。
但是我不想做.join(time)
,因为主进程必须停在那里等待。我只想让主进程不断地获取数据,然后fork子进程来做上传,它超过了超时时间,只需杀死它就可以避免僵尸。这就是全部。有人能推荐一种建筑吗?谢谢。
你可以用Pebble来做这个。在
对于这样的任务,一个很好的框架是Luigi。它是为数据依赖而设计的,但是您可以轻松地为每个任务设置超时,并且可以设置超时,这样它就不会重试失败的任务。Here'sLuigi用法的原始示例。在
要为每个任务设置超时,请将
worker-timeout
设置为以秒为单位的时间量。http://luigi.readthedocs.org/en/stable/configuration.html要设置luigi使其不会重试任务,请将disable\u failures设置为0。http://luigi.readthedocs.org/en/stable/_modules/luigi/scheduler.html
不过,要了解luigi是如何工作的确实需要大量的工作,而且文档比我希望的要少。Luigi Google Group是许多luigi问题/答案所在的地方。在
相关问题 更多 >
编程相关推荐