Перезагрузите mod_fcgid, не убивая Python Service - PullRequest
1 голос
/ 21 апреля 2010

В настоящее время я работаю над проектом Django на веб-сервере моей школы с FCGI. Я следовал нескольким руководствам, которые рекомендуют установить виртуальную локальную среду Python, и она отлично сработала. Единственной проблемой, с которой я столкнулся, было то, что «прикосновения» к моему fcgi-файлу для перезагрузки исходных файлов было недостаточно, но вместо этого мне пришлось убить службу python через SSH. Это потому, что используется mod_fcgid.

Однако администратор не думал, что это хорошая идея, что я запустил свой собственный локальный питон. Он подумал, что будет лучше, если я просто скажу ему, какие модули устанавливать в root, и это был довольно приятный сервис.

Но, делая это, я больше не могу убить питона, так как он под root (хотя я и аморален, я определенно пытался). Администраторы рекомендовали, чтобы я тоже попробовал перезагрузить скрипт fcgi, отметив отметку времени. Я пытался найти документацию о том, как это сделать, но финансировал очень мало, и, поскольку я абсолютный новичок, я понятия не имею, что сработает. Кто-нибудь имеет опыт запуска python / django в mod_fcgid или советов, где найти соответствующие руководства / документацию?

1 Ответ

0 голосов
/ 21 апреля 2010

вот что я бы сделал:

## top of my .fcgi script
import sys, time
original_modules = sys.modules.copy()

## in a separate thread
old_ctime = os.path.getctime("mymodule.py")
while True:
    time.sleep(10)
    new_ctime = os.path.getctime("mymodule.py")
    if new_ctime > old_ctime:
        sys.modules = original_modules # reset all imports
        import mymodule
        mymodule.dofcgi()

Конечно, это не идеальный вариант (вам, возможно, придется возиться с потоками), но он должен дать вам общее представление о том, как полностью «перезагрузить» модуль.

...