Тайм-аут Pywps для длинных процессов (асинхронный запрос)
Я выполняю длительный процесс WPS около 180 секунд, и когда он запускается через 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
1 ответ
Проблема возникла у клиента Qgis WPS, он отказался от процесса подачи заявки продолжительностью более 60 минут! Я использовал клиент openlayers, он работал хорошо в асинхронном режиме, конечно, после того, как были установлены экземпляры тайм-аута PyWPS и Apache.