I am working my way through learning Twisted, and have stumbled across something I'm not sure I'm terribly fond of - the "Twisted Command Prompt". I am fiddling around with Twisted on my Windows machine, and tried running the "Chat" example:
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)
However, to run this application as a Twisted server, I have to run it via the "Twisted Command Prompt", with the command:
twistd -y chatserver.py
Is there any way to change the code (set Twisted configuration settings, etc) so that I can simply run it via:
python chatserver.py
I've Googled, but the search terms seem to be too vague to return any meaningful responses.
Thanks.
I don't know if it's the best way to do this but what I do is instead of:
you can do:
Sumarized if you want to have the two options (twistd and python):
Hope it helps!
Don't confuse "Twisted" with "
twistd
". When you use "twistd
", you are running the program with Python. "twistd
" is a Python program that, among other things, can load an application from a.tac
file (as you're doing here).The "Twisted Command Prompt" is a Twisted installer-provided convenience to help out people on Windows. All it is doing is setting
%PATH%
to include the directory containing the "twistd
" program. You could run twistd from a normal command prompt if you set your %PATH% properly or invoke it with the full path.If you're not satisfied with this, perhaps you can expand your question to include a description of the problems you're having when using "
twistd
".On windows you can create .bat file with your command in it, use full paths, then just click on it to start up.
For example I use:
I haven't used twisted myself. However, you may try seeing if the twistd is a python file itself. I would take a guess that it is simply managing loading the appropriate twisted libraries from the correct path.
Maybe one of
run
orrunApp
in twisted.scripts.twistd modules will work for you. Please let me know if it does, it will be nice to know!