[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Killing a ruby script gracefully

Tim Conner

7/10/2008 8:36:00 AM

I have a Ruby script that uses Event machine to listen on a port for
incoming data. When data is received, the script saves it to the
database.
How can I kill this script gracefully? I want to make sure that the
data is not being processed or saved the to DB when I kill it.

script looks something like:

#!/usr/bin/env ruby
require 'rubygems'
require 'eventmachine'

module TestServer
def receive_data data
#Process and save data
end

end

EventMachine::run {
$a = EventMachine::open_datagram_socket "", 1720,
TestServer

}
--
Posted via http://www.ruby-....

1 Answer

Joel VanderWerf

7/10/2008 4:17:00 PM

0

M. Edward (Ed) Borasky wrote:
> Tim Conner wrote:
>> I have a Ruby script that uses Event machine to listen on a port for
>> incoming data. When data is received, the script saves it to the
>> database.
>> How can I kill this script gracefully? I want to make sure that the
>> data is not being processed or saved the to DB when I kill it.
>>
>> script looks something like:
>>
>> #!/usr/bin/env ruby
>> require 'rubygems'
>> require 'eventmachine'
>>
>> module TestServer
>> def receive_data data
>> #Process and save data
>> end
>>
>> end
>>
>> EventMachine::run {
>> $a = EventMachine::open_datagram_socket "", 1720,
>> TestServer
>>
>> }
>
> I don't know about Windows, but on Linux, and most Unix-ish systems,
> when you "kill" a process, what you are actually doing is sending a
> signal to it, which the process can handle, catch or ignore. Processes
> usually have a default behavior for some signals built in. So check out
> "Signal handling" in the Pickaxe for the details. And if you have a
> Linux system, do "man kill" and "kill -l" for the low-level details.
>
> One note: signal number 9 can not be caught or ignored on a Unix-ish
> box. So even if you write your own signal handler, anybody with the
> right privileges can send signal 9 to it and force an immediate and
> possibly data-corrupting end to your script.

Sounds like he was asking: which signals does EM handle and how...?

I would guess TERM would be handled with a graceful exit, just because
that's fairly standard, but ask someone who knows EM better than I do.

--
vjoel : Joel VanderWerf : path berkeley edu : 510 665 3407