Newbie: trying to twist my head around twisted (and python)

Jean-Paul Calderone exarkun at divmod.com
Fri Oct 20 11:47:11 EDT 2006


On Fri, 13 Oct 2006 18:44:35 +0200, Jan Bakuwel <jan.bakuwel at int.greenpeace.org> wrote:
>Jean-Paul Calderone wrote:
>
>> The return value of eomReceived is used to determine whether to signal to
>> the SMTP client whether the message has been accepted.  Regardless of your
>> application logic, if you are taking responsibility for the message, you
>> should return a successful result.  If all of your processing is
>> synchronous,
>> then you simply need to return twisted.internet.defer.succeed(None) at the
>> end of the function.  If you have asynchronous processing to do (it does
>> not
>> appear as though you do), you will need to return a Deferred which only
>> fires
>> once that processing has been completed.
>
>There's still a bit of mystery in here for me...
>I'll be taking responsibility for the message in my code... but perhaps
>my code encounters a non resolvable error (such as disc full). In that
>case I would like to be able to signal a failure instead of success.
>
>Would the following code do the job "properly"?
>
>    def eomReceived(self):
>        # message is complete, store it
>        self.lines.append('') # add a trailing newline
>        messageData = '\n'.join(self.lines)
>        emailMessage = message_from_string(messageData)
>        try:
>            processEmail(emailMessage)
>            return defer.succeed(None)
>        except:
>            return defer.fail
>    #end eomReceived

Close.  Return defer.fail() and it's basically correct.  Sorry for the
delayed response, python-list is high enough traffic that tracking down
followups is kind of a hassle.  You might want to move over to the Twisted
list for further Twisted questions.

Jean-Paul



More information about the Python-list mailing list