Как вы запускаете приложение Twisted через Python (а не через Twisted)?
Я работаю над обучением Twisted и наткнулся на что-то, что я не уверен, что я очень люблю - "Twisted Command Prompt". Я возился с Twisted на моей машине с Windows и пытался запустить пример "Чат":
from twisted.protocols import basic
class MyChat(basic.LineReceiver):
def connectionMade(self):
print "Got new client!"
self.factory.clients.append(self)
def connectionLost(self, reason):
print "Lost a client!"
self.factory.clients.remove(self)
def lineReceived(self, line):
print "received", repr(line)
for c in self.factory.clients:
c.message(line)
def message(self, message):
self.transport.write(message + '\n')
from twisted.internet import protocol
from twisted.application import service, internet
factory = protocol.ServerFactory()
factory.protocol = MyChat
factory.clients = []
application = service.Application("chatserver")
internet.TCPServer(1025, factory).setServiceParent(application)
Однако, чтобы запустить это приложение как Twisted-сервер, я должен запустить его через "Twisted Command Prompt" с помощью команды:
twistd -y chatserver.py
Есть ли способ изменить код (установить параметры Twisted configuration и т.д.), чтобы я мог просто запустить его через:
python chatserver.py
У меня Googled, но поисковые термины кажутся слишком неопределенными, чтобы возвращать любые значимые ответы.
Спасибо.
Ответы
Ответ 1
Я не знаю, лучший ли это для этого, но то, что я делаю, вместо:
application = service.Application("chatserver")
internet.TCPServer(1025, factory).setServiceParent(application)
вы можете сделать:
from twisted.internet import reactor
reactor.listenTCP(1025, factory)
reactor.run()
Сумаризовать, если вы хотите иметь два параметра (twistd и python):
if __name__ == '__main__':
from twisted.internet import reactor
reactor.listenTCP(1025, factory)
reactor.run()
else:
application = service.Application("chatserver")
internet.TCPServer(1025, factory).setServiceParent(application)
Надеюсь, что это поможет!
Ответ 2
Не путайте "Twisted" с "twistd
" . Когда вы используете "twistd
" , вы запускаете программу с помощью Python. "twistd
" - это программа Python, которая, помимо прочего, может загружать приложение из файла .tac
(как вы здесь делаете).
"Twisted Command Prompt" - это удобное средство для виртуализации, упрощающее работу с людьми в Windows. Все, что он делает, это установить %PATH%
для включения каталога, содержащего программу "twistd
" . Вы можете запустить twistd из обычной командной строки, если вы правильно установите% PATH% или вызовите его с полным путем.
Если вас это не устраивает, возможно, вы можете расширить свой вопрос, включив описание проблем, возникающих при использовании "twistd
" .
Ответ 3
В окнах вы можете создать файл .bat с вашей командой в нем, использовать полные пути, а затем просто нажать на него, чтобы запустить.
Например, я использую:
runfileserver.bat:
C:\program_files\python26\Scripts\twistd.py -y C:\source\python\twisted\fileserver.tac
Ответ 4
Возможно, один из run
или runApp
в twisted.scripts.twistd будет работать для вас. Пожалуйста, дайте мне знать, если это так, хорошо бы знать!
Ответ 5
Я не использовал себя. Тем не менее, вы можете попробовать посмотреть, является ли twistd файлом самого python. Я бы предположил, что он просто управляет загрузкой соответствующих скрученных библиотек с правильного пути.