2014-11-04 6 views
1

Я надеюсь, что это будет самый простой вопрос, который я задал здесь! Я googled и т. Д., Но не нашел ничего определенного. У меня есть .tac-файл, который, как я знаю, является скрученным приложением. Я могу запустить это, выполнив:скрученный python - tac, или py?

twistd -ny mailserver.tac 

, если бы я быть следующее, будет поведение любых различных (то есть, то, что столь значительны об использовании twistd исполняемого файла, и .tac суффиксов файлов

mv mailserver.tac mailserver.py 
python mailserver.py 
?

или даже без переименования:

python mailserver.tac 

Любое наведение на различиях будет приветствоваться

+1

dupliacte - http://stackoverflow.com/questions/1897939/how-do-you-you-run-a-twisted-application-via-python-instead-of-via-twisted – WeaselFox

+0

Что находится в 'mailserver .py'? – Glyph

+0

В основном я пытался работать с mailserver.tac (http://twistedmatrix.com/documents/current/_downloads/emailserver.tac) в windows env, используя eclipse и pyDev, но это (неудивительно) не распознает файлы tac. Все хорошо, хотя благодаря @WeaselFox, указывающему на то, что я не смог найти по googling;) Если кто-то считает, что у меня есть ценность, когда я вставляю свой «новый» код mailserver.py в качестве ответа, демонстрируя, как скрипт может быть дружелюбным к python/twistd, счастлив сделать это! –

ответ

2

Расширение файла не имеет большого значения. Все twistd (и даже python) действительно читает содержание и оценивает их. Имя файла почти совершенно не имеет значения.

Однако использование twistd вместо python для запуска файла довольно важно. Если вы запустите файл , значит будет .tac файлом, используя python, что мало или ничего интересного не произойдет. Это должно быть очевидно из чтения файла .tac. Ни один важный код, который делает что-либо интересное, не выполняется в соответствии с обычными правилами того, как python оценивает и выполняет исходный файл.

Рассмотрите emailserver.tac. Единственный код верхнего уровня, который он включает, - это несколько определений классов и вызов функции, которая создает экземпляр и возвращает экземпляр Application. Если вы оцениваете это с помощью python, вы получите экземпляр Application, а затем программа завершится и выйдет. Сравните это с тем, что произойдет, если вы используете twistd - то же самое, что и python, но затем также запускает приложение и запускает реактор.