[Twisted-Python] using ClientFactory from within a server

Jp Calderone exarkun at intarweb.us
Sun Sep 28 21:23:08 MDT 2003


On Sun, Sep 28, 2003 at 09:30:33PM -0400, Greg wrote:
> I am having trouble using ClientFactory to communicate from within a server. 
> Specifically, I can't figure out the proper way to exit from the client 
> process. 
> 
> Included is some example code illustrating the problem I am having. It is the 
> simple echo server example, but when someone sends some text to the server, I 
> am trying to talk to an SMTP server to send an email. This is just an example 
> (there are probably better ways to fire off an email), but you get the idea. 
> The client code never "exits" and if I try to use reactor.stop() it causes a 
> traceback. 

  reactor.run() enters the twisted mainloop.  reactor.stop() causes the
mainloop to terminate in the near future.  You cannot nest calls to the
mainloop (nor do you need to do so).

> 
> So how do I properly exit from this client code, or (being new to twisted) am 
> I going about this in the entirely wrong way? Thanks.
> 
> 
> #!/usr/bin/env python
> 
> from twisted.internet import reactor
> from twisted.internet.protocol import Protocol, ClientFactory, ServerFactory
> import sys
> 
> class Echo(Protocol):
> 	"""This is just about the simplest possible protocol"""
> 	
> 	def dataReceived(self, data):
> 		"As soon as any data is received, write it back."
> 		self.transport.write(data)
> 		factory2 = MySMTPClientFactory()
> 		host = 'localhost'
> 		port = 25
> 		reactor.connectTCP(host, port, factory2)
> 		reactor.run()

  Remove the above call to "reactor.run() and see what happens.

> 
> 		print "Returned from sending email"
> 		# ^ Never gets to this point
> 		
> class MySMTP(Protocol):
> [snip]
> 				

  I don't understand why you aren't using twisted.protocols.smtp.

> [snip]

  Jp

-- 
http://catandgirl.com/view.cgi?44
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: </pipermail/twisted-python/attachments/20030928/0421287f/attachment.sig>


More information about the Twisted-Python mailing list