hi there, folks:
I'd really like to release 0.7.0 but I would like it to be at least a
little bit tested before I do so. Could those of you with CVS trees check
everything out and see if it performs as advertised? Deeper bugs than
that will have to wait for the next release, but I'd at least like to know
if it works for someone other than me.
______ __ __ _____ _ _
| ____ | \_/ |_____] |_____|
|_____| |_____ | | | |
@ t w i s t e d m a t r i x . c o m
In investigating async file I/O I came across this. In a nutshell it's
the new epoll()
It's marginally more efficient although this is only apparent at very
high loads. What's more interesting is that io_uring accepts files as
well as network/pipe handles: avoiding the need for threads.
Here's a good intro: https://unixism.net/loti/index.html
If people think an IoUringReactor is worthwhile I'll open a ticket and
make a start.
However it will need a reviewer... :-)
I have started working with Twisted and found it to be a very powerful
package. That said, some modules are not documented very thoroughly (big
surprise in the world of software, right?) and I also found some
questionable code, too.
If I were to contribute fixes/improvements, what is the submission
I plan to act as a release manager for the next release and follow the plan
The plan is to push the release candidate only on PyPI and to host the
release candidate documentation (including pydoctor generated API docs)
only on Read the Docs site.
The Twisted Wiki Download page was updated to inform that PyPI is the only
server where we publish the latest versions.
So release candidates and final releases will be pushed only to PyPI.
While the release candidate documentation in only published on Read The
at least for the next release I plan to also publish the documentation to:
After the release we can see if we can redirect them to Read The Docs.
For now, the only release blocker are the missing intersphinx API links on
Read The Docs between the narrative docs and apidocs, but that is on track
to be solved by next week.
So no other tickets are in the blocker queue:
Do you know any other release blocker issues?
Since we have good continuous testing, maybe we can stop doing release
The only thing blocking a release would be a "release blocket" ticket and
truck CI checks not being green.
Hi, I apologize this question is a little vague. I'm looking for pointers.
I have a klein route that makes an underlying deferToThread call with a
simple single thread (an IO based sync call I can't change, a boto3 sqs
write). The thread pool is simple, just a couple of threads, nothing fancy.
VERY rarely it appears that Klein cancels the thread. What techniques can I
use to figure out why my thread is being Canceled? There's nothing in the
failure to tell me "who, why, or where" it was canceled. Also, I cannot get
this down to a reproducible case, but here's the boto3 sqs wrapper, this
fall back works fine, but it's a band-aide for an error I can't track down.:
def write(self, payload):
Write message to SQS async from thread pool. If twisted cancels the
thread, instead write synchronously.
if error.type != CancelledError:
log.warn("Async SQS write cancelled. Calling synchronously.")
deferredCall = self._deferToThread(self.sqs.write, payload)
def _writeSyncFallback(self, payload):
The _deferToThread call just uses my own thread pool with 2 threads, but is
Is there a level of logging I'm missing or some other thing that would tell
me why the thread is being canceled? The retry works great and Klein does
not return an error from the route.
Thanks in advance.
I asked some questions about the Twisted project leadership committee here:
but it looks like my questions got lost in the thread, and no one aso I
will ask again.
Who are the current members of the committee?
What are the titles/roles/responsibilities of the current committee members?
Is there a mailing list, IRC channel, or some other venue which the current
committee members belong to
so that they can communicate amongst themselves, and also with the outside
world, such as the Software Freedom Conservancy?
I'm using Ldaptor for LDAP access because it fits in with Twisted, and the results are a bit mystifying. The results that come back from a search are a list of LDAPEntryWithClient. Indexing this, e.g. entry['cn'], gives an object of type JournaledLDAPAttributeSet, which is a subclass of set. It contains the name of the attribute and a list containing the value:
JournaledLDAPAttributeSet(b'cn', [b'Peter Westlake'])
Getting the value out of that isn't straightforward: I'd have to check the elements of the set for a list. Is there a better way?
I've also found that the items() method gives something more tractable:
(b'cn', b'Peter Westlake'),
so I can turn that into a dict and index that. But again, this seems like an odd design for an API. Is there a better way to extract the value of an attribute from an entry?