4

約 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...) によるプロセス"。

また、この種のスタチュー チェックでは、リテラル出力が返されません。:

どんな助けでも感謝します。

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
4

1 に答える 1

1

問題は Qgis WPS クライアントから発生しました。彼は 60 分以上続くアプリケーション プロセスを放棄しました! 私は openlayers クライアントを使用しました。もちろん、PyWPS と Apache のタイムアウト インスタンスが設定されると、非同期モードでうまく機能しました。

于 2015-05-10T17:43:04.207 に答える