2010-04-21 2 views
1

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

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

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

ответ

0

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

## 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() 

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

+0

Спасибо! Это тоже похоже на псевдо-идею, которая у меня была в голове, но понятия не имела, как ее реализовать. – Tobias