Difference between revisions of "Job Module"
Jump to navigation
Jump to search
| Line 75: | Line 75: | ||
|- | |- | ||
| '''Errors''' | | '''Errors''' | ||
| − | |{{Error|overflow|#Errors}} Too many queries or query results are queued. | + | |{{Error|overflow|#Errors}} Too many queries or query results are queued. {{Option|CACHETIMEOUT}} can be decreased if the default setting is too restrictive.<br/> |
|- | |- | ||
| '''Examples''' | | '''Examples''' | ||
Revision as of 05:11, 27 June 2016
This XQuery Module provides functions for organizing running commands and queries (…more to come).
Contents
Conventions
All functions in this module are assigned to the http://basex.org/modules/jobs namespace, which is statically bound to the jobs prefix. Errors will be bound to the same prefix.
Functions
jobs:current
| Signatures | jobs:current() as xs:string
|
| Summary | Returns the id of the current query job. |
jobs:list
| Signatures | jobs:list() as xs:string*
|
| Summary | Returns the ids of all jobs that are currently queued or executed. |
| Examples |
|
jobs:finished
| Signatures | jobs:finished($id as xs:string) as xs:boolean
|
| Summary | Indicates if the evaluation of a job with the specified job $id has finished:
|
jobs:stop
| Signatures | jobs:stop($id as xs:string) as empty-sequence()
|
| Summary | Cancels the execution of a job with the specified $id, or drops the cached result of a query. Unknown ids are ignored.
|
Asynchronous Execution
Asynchronous query execution is recommendable if a client does not, or cannot, wait until a request is fully processed. This is e. g. the case with web browsers, which will usually cancel a request after a specific timeout. In such cases, you can use asynchronous execution to trigger another server-side process, which will start the time-consuming process, and fetch the result later on as soon as it is available.
jobs:eval
| Signatures | jobs:eval($query as xs:string) as xs:stringjobs:eval($query as xs:string, $bindings as map(*)) as xs:stringjobs:eval($query as xs:string, $bindings as map(*), $options as map(xs:string, xs:string)) as xs:string |
| Summary | Prepares the supplied $query string for asynchronous execution and returns a query id. The query will be queued as described in the article on Transaction Management, and the result will be cached in main-memory until it is fetched via jobs:result, or until CACHETIMEOUT is exceeded. Queries may be updating.Variables and context items can be declared via $bindings (see xquery:eval for more details). The $options parameter contains evaluation options:
|
| Errors | overflow: Too many queries or query results are queued. CACHETIMEOUT can be decreased if the default setting is too restrictive. |
| Examples |
declare %rest:POST("{$query}") %rest:path('/eval') function local:eval($query) {
jobs:eval($query)
};
|
jobs:result
| Signatures | jobs:result($id as xs:string) as item()*
|
| Summary | Returns the cached result of a query with the specified job $id:
|
| Errors | running: the query is still running.unknown: the supplied query id is unknown: The query result may already have been retrieved, or query execution may have been stopped. |
| Examples |
declare %rest:path('/result/{$id}') function local:result($id) {
jobs:result($id)
};
let $query := jobs:eval('(1 to 10000000)[. = 1]')
return (
hof:until(
function($result) { jobs:finished($query) },
function($curr) { prof:sleep(10) },
()
),
jobs:result($query)
)
|
Errors
| Code | Description |
|---|---|
unknown
|
The supplied query id is unknown or not available anymore. |
running
|
A query is still running. |
overflow
|
Too many queries or query results are queued. |
Changelog
The module was introduced with Version 8.5.