почему мой многопоточный скрипт Python не работает при вызове через cgi?

У меня есть следующий многопоточный скрипт Python:

#!/usr/bin/python
from threading import Thread, Event

def doSum(num):
    abc = 1
    abc = abc + num

if __name__ == '__main__':
    print "Content-Type: text/html\r\n\r\n"
    p1 = Thread(target=doSum, args=(14,))
    print "thread created"
    p1.start()
    print "thread started"
    p1.join()
    print "thread joining"
    print "done"

Я специально создал функцию doSum, чтобы она не делала ничего полезного для этого теста. Этот скрипт отлично запускается из командной строки, но каждый раз падает на "p1.start()". Запуск strace в процессе cgi дает:

> clone(child_stack=0x7fdcad515ff0,
> flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND|CLONE_THREAD|CLONE_SYSVSEM|CLONE_SETTLS|CLONE_PARENT_SETTID|CLONE_CHILD_CLEARTID,
> parent_tidptr=0x7fdcad5169d0, tls=0x7fdcad516700,
> child_tidptr=0x7fdcad5169d0) = 29570 futex(0xf8c8f0,
> FUTEX_WAIT_PRIVATE, 0, NULL <unfinished ...>
> +++ killed by SIGABRT +++

Почему начало потока умирает при запуске как cgi, но не в командной строке? На веб-сервере работает suexec, поэтому процессы запускаются под одним и тем же пользователем как в случае cgi, так и в случае командной строки.

Мой провайдер работает под управлением Python 2.6.6.


person whisperstream    schedule 17.09.2013    source источник
comment
Возможно, stackoverflow.com/questions/11893922/ может помочь   -  person Bjorn    schedule 17.09.2013
comment
Хм, а где строка импорта cgi?   -  person sissi_luaty    schedule 17.09.2013