Hi Abhishek,
So it turns out the xdmp:http-gets will begin to evaluate asyncrounously. The
sleeps that I put in that query forced them to block. They key is if you need
to use the response or not. So this query does not wait for the http-gets to
complete before logging in the return clause:
xquery version "1.0-ml";
xdmp:log("Req # 1"), xdmp:sleep(1000),
let $x := xdmp:http-get("http://marklogic.com")
let $y := xdmp:http-get("http://marklogic.com")
return
xdmp:log("Process completed")
I guess the question for you is do you need the query to use the output of the
http-get. If so, then you have to wait for it to complete in order to complete
the x-action.
-Danny
From: [email protected]
[mailto:[email protected]] On Behalf Of Abhishek53 S
Sent: Thursday, July 14, 2011 12:45 AM
To: General MarkLogic Developer Discussion
Subject: Re: [MarkLogic Dev General] Async behavior of HTTP request
Danny
Thanks for reply . Referring the link
(http://www.marklogicevents.com/file/presentations/Effective_XQuery_in_MarkLogic_Heitkamp_Koul.pdf)
where on slide 36 it is mentioned that HTTP interfaces executes
asynchronously. Let me know If I misunderstood.
Can It be possible to run child some transaction asynchronously. I am thinking
of one way to achieve it where the child module is written into separate xqy
file and then use xdmp:spawn to invoke the module. In this case the parent
transaction will not wait for the response from the spawned module. Let me know
If I am wrong here.
Any separate way to achieve the asynchronous child transaction?
Thanks
Abhishek Srivastav
Tata Consultancy Services
Cell:- +91-9883389968
Mailto: [email protected]
Website: http://www.tcs.com<http://www.tcs.com/>
____________________________________________
Experience certainty. IT Services
Business Solutions
Outsourcing
____________________________________________
From:
Danny Sokolsky <[email protected]>
To:
General MarkLogic Developer Discussion <[email protected]>
Date:
07/14/2011 06:27 AM
Subject:
Re: [MarkLogic Dev General] Async behavior of HTTP request
Sent by:
[email protected]
________________________________
Hi Abhishek,
I think the http-get requests are *synchronous*, not asynchronous; that is,
they will wait until they get the results to move on to the next thing in the
query. So I am not sure I understand your question. For example, if you run
the following:
let $x := (xdmp:http-get("http://marklogic.com<http://marklogic.com/>"),
xdmp:log("Req # 1"), xdmp:sleep(1000))
let $y := (xdmp:http-get("http://marklogic.com<http://marklogic.com/>"),
xdmp:log("Req # 1"), xdmp:sleep(1000))
return
xdmp:log("Process completed")
You will see 3 log messages in your log, and they will be about 1 second apart
from each other.
2011-07-13 17:53:48.395 Info: danny: Req # 1
2011-07-13 17:53:49.462 Info: danny: Req # 1
2011-07-13 17:53:50.462 Info: danny: Process completed
-Danny
From: [email protected]
[mailto:[email protected]] On Behalf Of Abhishek53 S
Sent: Wednesday, July 13, 2011 12:36 PM
To: General MarkLogic Developer Discussion
Subject: [MarkLogic Dev General] Async behavior of HTTP request
Hi Folks,
As per my understanding of HTTP request through Marklogic HTTP APIs is that
they are asynchronous by nature.Between the HTTP service requests the behavior
is asynchronous.
Is the calling module execute asynchronously with invoked HTTP requests ie
sample query
let $x := xdmp:http-get($uri1,())
let $y := xdmp:http-get($uri2,())
return
xdmp:log("Process completed")
Can the logging be done irrespective to wait for the response from both the
requests?
Your suggestions will be appreciated.
Thanks in advance
Abhishek Srivastav
Tata Consultancy Services
Cell:- +91-9883389968
Mailto: [email protected]<mailto:[email protected]>
Website: http://www.tcs.com<http://www.tcs.com/>
____________________________________________
Experience certainty. IT Services
Business Solutions
Outsourcing
____________________________________________
=====-----=====-----=====
Notice: The information contained in this e-mail
message and/or attachments to it may contain
confidential or privileged information. If you are
not the intended recipient, any dissemination, use,
review, distribution, printing or copying of the
information contained in this e-mail message
and/or attachments to it are strictly prohibited. If
you have received this communication in error,
please notify us by reply e-mail or telephone and
immediately and permanently delete the message
and any attachments. Thank you
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general
_______________________________________________
General mailing list
[email protected]
http://developer.marklogic.com/mailman/listinfo/general