Pywps超时长进程(异步请求)

时间:2014-05-16 15:45:23

标签: python wps

我正在执行大约180秒的长进程WPS,并且当它在60秒后启动时WPS(响应)被放弃,并且该过程继续运行直到结束(在日志文件上检查)。

我尝试了Pywps wiki提出的减少Apache服务器超时(http://wiki.rsg.pml.ac.uk/pywps/Async_issue)的解决方案,但没有成功!

我发现响应似乎是唯一的问题:http://lists.wald.intevation.org/pipermail/pywps-devel/2013-April/001598.html但是我没有找到如何通过self.cmd插入我的“调用过程”(“process.sh ...”)。 / p>

此类雕像检查也不会返回文字输出! :

任何帮助都将受到赞赏。

这是wps示例:

from pywps.Process.Process import WPSProcess
import time
import sys
from datetime import datetime

start=datetime.now()

class Process(WPSProcess):
    def __init__(self):
        # initialisation process
        WPSProcess.__init__(self,
            identifier="timeout_test",      
            title="timeout test",
            version = "1.0", 
            storeSupported = True,
            statusSupported = True,
            abstract="Ce WPS permet de tester les long processes")
    # Total sleep time
            self.delay = self.addLiteralInput(identifier = "delay",
            title = "Time delay in seconds.",
            abstract = "Field of type INTEGER specifying a time delay in seconds.",
            type = type(1.0),       
            default = 180)

输出

    self.num = self.addLiteralOutput(identifier="num",
                                     title="A sample literal output.")

执行

def execute(self):

    # Time sleep
    self.status.set("getting ready", 1)

    self.num.setValue(0)
    sys.stdout.flush()
    step = self.delay.getValue()/6

    for i in range(6):
        self.status.set("Processing...", i*10)
        sys.stdout.flush()
        time.sleep(step)


    self.status.set("Finishing", 100)

    self.num.setValue("Temps du traitement : " + str(datetime.now()-start)+"\n")

    return

1 个答案:

答案 0 :(得分:1)

问题来自Qgis WPS客户端,他放弃了持续超过60分钟的申请流程!我使用了一个openlayers客户端,它在异步模式下运行良好,当然,一旦设置了PyWPS和Apache的超时实例。