2014-12-24 4 views
0

образец кода здесьс помощью twistd запустить витую приложение, но скрипт запустить дважды

# main.py 
from twisted.application import service, internet 

application = service.Application("x") 
service.IProcess(application).processName = "x" 

print "some log...." 

если я запускаю этот main.py с:

twistd -y main.py 

Я получил 2 «некоторый журнал .... "линий.

Если этот код выполняется дважды?

enter image description here

+0

для меня он запускается один раз .. вы можете воспроизвести его с помощью этого кода? – Udy

+0

Я добавляю здесь рисунок. Я думаю, может быть, журнал печатает дважды, если я использую печать. – holsety

ответ

2

«Имя процесса» функция вы используете работу путем повторного выполнения процесса с новым argv[0]. Нет абсолютно надежного способа сохранить произвольный объект (например, приложение) для повторного выполнения этого процесса. Это означает, что файл .py должен быть переоценен в новом процессе для воссоздания объекта Application, поэтому twistd знает, что вы хотите.

+0

да! Я удалил service.IProcess (application) .processName = "x", и он печатает один журнал строк. Но это все еще немного странно – holsety

0

Возможно, вы захотите использовать setproctitle, а не встроенную функцию заголовка процесса twistd. (В этом отношении, возможно, twistd должен просто использовать его, если он доступен ...)