Thanks

Per my previous comment, unfortunately @async / @spawn cause the app / 
server to exit immediately. 

Let me give @persist a try. 

Cheers! 

vineri, 22 ianuarie 2016, 22:45:10 UTC+1, Erik Schnetter a scris:
>
> If you want to be able to terminate your local Julia process, and have 
> the server continue to run in the background, then you might want to 
> check out <https://github.com/eschnett/Persist.jl>. This does the 
> equivalent of run/detach, but in such a way that the detached process 
> runs as daemon. 
>
> Otherwise, if you don't need this functionality, then @async is the way to 
> go. 
>
> -erik 
>
> On Fri, Jan 22, 2016 at 4:40 PM, Stefan Karpinski <ste...@karpinski.org 
> <javascript:>> wrote: 
> > @spawn runs a command on a (random) worker process. If you want to do 
> > "background" work in the current process, you can use @async: 
> > 
> > julia> t = @async (sleep(5); rand()) 
> > Task (runnable) @0x0000000112d746a0 
> > 
> > julia> wait(t) 
> > 0.14543742643271207 
> > 
> > 
> > On Fri, Jan 22, 2016 at 4:33 PM, Adrian Salceanu <adrian....@gmail.com 
> <javascript:>> 
> > wrote: 
> >> 
> >> Oh! The ruby analogy made me think about actually spawning the detached 
> >> command! Which produced the desired effect! 
> >> 
> >> julia> @spawn run(detach(`ping www.google.com`)) 
> >> 
> >> 
> >> 
> >> vineri, 22 ianuarie 2016, 22:29:27 UTC+1, Adrian Salceanu a scris: 
> >>> 
> >>> I guess what I'm looking for is the equivalent of Ruby's Process#spawn 
> >>> 
> >>> In REPL: 
> >>> 
> >>> >> pid = Process.spawn("ping www.google.com", :out => '/dev/null') 
> >>> 83210 
> >>> >>                         <-- the process is running in the 
> background 
> >>> >> and control has been returned to the REPL 
> >>> 
> >>> 
> >>> vineri, 22 ianuarie 2016, 22:06:01 UTC+1, Adrian Salceanu a scris: 
> >>>> 
> >>>> Hi, 
> >>>> 
> >>>> I'm hammering at a web app and I'm trying to setup functionality to 
> >>>> monitor the file system for changes and restart/reload the server 
> >>>> automatically so the changes are picked up (I'm using Mux which uses 
> >>>> HttpServer). 
> >>>> 
> >>>> The approach I have in mind is: 
> >>>> 
> >>>> 1. have a startup script which is run from the command line, 
> something 
> >>>> like: 
> >>>> $ julia -L startup.jl 
> >>>> 
> >>>> 2. the startup script launches the web app, which starts the web 
> server. 
> >>>> My intention was to run 
> >>>> $ julia -L app.jl 
> >>>> as a command inside startup.jl, detached, and have the startup.jl 
> script 
> >>>> get back control, with app.jl running detached in the background. 
> >>>> 
> >>>> 3. once startup.jl gets back control, it begins monitoring the file 
> >>>> system and when changes are detected, kills the app and relaunches 
> it. 
> >>>> 
> >>>> That was the theory. Now, I might be missing something but I can't 
> find 
> >>>> a way to detach the command I'm running and get control back to the 
> startup 
> >>>> script. And I tried a lot of things! 
> >>>> 
> >>>> === 
> >>>> 
> >>>> I'm providing simpler example using "ping", which also run 
> indefinitely, 
> >>>> similar to the web server. 
> >>>> 
> >>>> julia> run(detach(`ping "www.google.com"`)) # the command is 
> detached 
> >>>> and continues to run after the julia REPL is closed, but at this 
> point the 
> >>>> REPL does not get control, there's no cursor available in the REPL 
> >>>> PING www.google.com (173.194.45.82): 56 data bytes 
> >>>> 64 bytes from 173.194.45.82: icmp_seq=0 ttl=54 time=30.138 ms 
> >>>> 64 bytes from 173.194.45.82: icmp_seq=1 ttl=54 time=30.417 ms 
> >>>> ... more output ... 
> >>>> 64 bytes from 173.194.45.82: icmp_seq=7 ttl=54 time=30.486 ms 
> >>>> 64 bytes from 173.194.45.82: icmp_seq=8 ttl=54 time=30.173 ms 
> >>>> ^CERROR: InterruptException: 
> >>>> <---- here I press Ctrl+C and only now the REPL gets back the cursor, 
> with 
> >>>> the command still running in the background 
> >>>> 
> >>>> === 
> >>>> 
> >>>> Also, related to this, passing "&" into the command to detach does 
> not 
> >>>> work as expected, the "&" is interpreted as argument of the command. 
> Not 
> >>>> sure if this would help anyway to return control to the startup.jl 
> script? 
> >>>> 
> >>>> julia> run(detach(`ping "www.google.com" &`)); 
> >>>> usage: ping [-AaDdfnoQqRrv] [-b boundif] [-c count] [-G sweepmaxsize] 
> >>>>             [-g sweepminsize] [-h sweepincrsize] [-i wait] [−k 
> >>>> trafficclass] 
> >>>>             [-l preload] [-M mask | time] [-m ttl] [-p pattern] 
> >>>>             [-S src_addr] [-s packetsize] [-t timeout][-W waittime] 
> [-z 
> >>>> tos] 
> >>>>             host 
> >>>>        ping [-AaDdfLnoQqRrv] [-b boundif] [-c count] [-I iface] [-i 
> >>>> wait] 
> >>>>             [−k trafficclass] [-l preload] [-M mask | time] [-m ttl] 
> [-p 
> >>>> pattern] [-S src_addr] 
> >>>>             [-s packetsize] [-T ttl] [-t timeout] [-W waittime] 
> >>>>             [-z tos] mcast-group 
> >>>> ERROR: failed process: Process(`ping www.google.com &`, 
> >>>> ProcessExited(64)) [64] 
> >>>>  in run at /usr/local/Cellar/julia/0.4.2/lib/julia/sys.dylib 
> >>>> 
> >>>> === 
> >>>> 
> >>>> Thanks 
> > 
> > 
>
>
>
> -- 
> Erik Schnetter <schn...@gmail.com <javascript:>> 
> http://www.perimeterinstitute.ca/personal/eschnetter/ 
>

Reply via email to