Ok, the patch maybe works.  Sage starts normally after patching, but I'm 
getting a segfault from the django process when I try to load a webpage, so 
not sure what that's about....

Is there documentation or good examples somewhere on how to use Sage as a 
subprocess?

On Friday, March 29, 2013 10:23:10 AM UTC+3, tom d wrote:
>
> Cool, I'll give the patch a shot.  It looks like some other projects have 
> a variable or option for disabling interrupts for exactly this reason; if a 
> patch works, it might make sense to do signals optionally in Sage.
>
> I'm trying to import the sage libraries into some Django code.  I'm 
> playing with getting a sage-enabled web-framework, which would allow me to 
> do lots and lots of Sage-things in a webpage using a local installation of 
> Sage directly, instead of passing through the cell server, for example. 
>  Django has a server which builds up the webpages that you ask for.  Then, 
> in the code that generates a webpage, I'm doing a 'from sage.all import *' 
> to give access to the Sage libraries.  If a subprocess is a better way to 
> do that, I should look into it...
>
> Thanks for the quick response!
>
> On Friday, March 29, 2013 10:02:25 AM UTC+3, Jeroen Demeyer wrote:
>>
>> On 03/28/2013 11:44 PM, tom d wrote: 
>> > The problem seems to be at: 
>> > from sage.ext.c_lib import _init_csage, sig_on_count 
>> > _init_csage() 
>> > which is explicitly using the signal library and doing signal handling 
>> > stuff for Sage.  Any idea how deep this goes?  Some of the online 
>> > suggestions are about using some different libraries for signal 
>> > handling, which might be a bit more sensitive about whether Sage is the 
>> > main process or not. 
>> You could completely disable the Sage signal handler, I guess the 
>> following patch would do it (NOT TESTED!) 
>>
>> diff --git a/c_lib/src/stdsage.c b/c_lib/src/stdsage.c 
>> --- a/c_lib/src/stdsage.c 
>> +++ b/c_lib/src/stdsage.c 
>> @@ -48,7 +48,6 @@ 
>>   void init_csage() { 
>>       init_global_empty_tuple(); 
>>       init_memory_functions(); 
>> -    setup_sage_signal_handler(); 
>>       setup_NTL_error_callback(global_NTL_error_callback, NULL); 
>>   } 
>>
>> diff --git a/sage/ext/c_lib.pyx b/sage/ext/c_lib.pyx 
>> --- a/sage/ext/c_lib.pyx 
>> +++ b/sage/ext/c_lib.pyx 
>> @@ -37,8 +37,6 @@ 
>>       # call its interrupt handler (which is the one we set now). This 
>>       # handler issues a sig_check() which finally raises the 
>>       # KeyboardInterrupt exception. 
>> -    import signal 
>> -    signal.signal(signal.SIGINT, sage_python_check_interrupt) 
>>
>>       init_csage() 
>>
>>
>>
>> But seriously: why are you trying to run Django and Sage in the same 
>> process? That seems like asking for trouble.  Couldn't you run a Sage 
>> subprocess? 
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-devel" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sage-devel+unsubscr...@googlegroups.com.
To post to this group, send email to sage-devel@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-devel?hl=en.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to