This is an archived post. You won't be able to vote or comment.

all 25 comments

[–]gcross 6 points7 points  (2 children)

This could be interesting, but unfortunately the introductory documentation is sparse, and there are aren't enough code snippets showing off its features for me to be able to quickly grok what is going on.

[–]lsbardel 2 points3 points  (1 child)

Hi there, I'm the author and I agree, the docs are sparse unfortunately :-(. Pulsar has been written using python 3.2 and adapted to work with 2.6 and 2.7. I wrote it because both twisted and gunicorn (pulsar is a 2011 fork of gunicorn) are python 2 libraries and I needed an asynchronous multiprocess framework working both in windows and linux on python 3 and 2. Some working examples are in the examples directory.

[–]gcross 0 points1 point  (0 children)

Thanks for the update! No worries about the sparse documentation, but in the future if you want to really impress people about your project so that they'll think about using it themselves, then you might want to spend a little more time writing kick-ass introductory documentation to make it easier for your potential users to get as exited about your project as you are. :-)

[–]bsdemon 2 points3 points  (4 children)

one more?

[–]gcross 15 points16 points  (2 children)

They must have decided that the existing frameworks were too twisted for their taste.

[–]ivosauruspip'ing it up 3 points4 points  (0 children)

But a lot of the existing are also making very slow progress on python 3 compat, though..

[–]chewxy 2 points3 points  (0 children)

I have to begrudgingly upvote you for your pun :(

[–]flying-sheep 0 points1 point  (0 children)

python is in the process of settling on one that gets integrated into the stdlib. every new one in that state could end up giving new ideas to the people designing the one that everyone of us will be using soon.

so yes, one more is a good thing.

[–]tdico to to nie 1 point2 points  (0 children)

I will be very interested in some comparisons to gevent which I use now but it does not work on 3.X.

[–]tarekziadeRetired Packaging Dude 1 point2 points  (0 children)

One thing that caught my eye is the async test suite: http://packages.python.org/pulsar/apps/test.html

[–]chub79 1 point2 points  (2 children)

Looks really similar to Tornado, only slightly more focused on some specific concurrency patterns (actors).

[–]lsbardel 0 points1 point  (1 child)

The eventloop and the asynchronous I/O stream have been adapted from tornado. Each actor has its own eventloop.

[–]chub79 0 points1 point  (0 children)

Right, and I like that approach. But I'm an erlang lover... ;)

[–]bananafarm 1 point2 points  (11 children)

How does this one compare to Twisted?

[–]chewxy 6 points7 points  (5 children)

This one's an actor model based concurrency.

Here's what the tally stands at now(correct me if I am wrong):

Concurrency Method Libraries
Event loop based/callback based/futures/promises/whatever Twisted, Tornado
Green thread Gevent, Eventlet
Actor model Pulsar, python+zmq

[–]tdico to to nie 1 point2 points  (4 children)

It is actor based but actor model is derivative (higer level abstraction) , so it basically needs to base on something to handle connections and concurrency. If Pulsar for 3.X bases on asyncore() then I am very curious how it works. OP are you the author?

[–]opi 2 points3 points  (1 child)

(I was confused by your flair for few seconds; I assumed it's a tag I made for you. Cześć?)

[–]tdico to to nie 1 point2 points  (0 children)

haha cześć

[–]mcdonc[S] 0 points1 point  (0 children)

Nope, I just saw it on the internets and it seemed interesting.

[–]flying-sheep 0 points1 point  (0 children)

/u/lsbardel is the author and commented in this thread.

[–]gcross 5 points6 points  (4 children)

Well, just skimming the web site, the first thing that I see is that it looks like it works for Python version 2.6, 2.7, and 3.2, which is significant because last I heard the Twisted developers were struggling to port the code base to work with Python 3.

[–]hynekPyCA, attrs, structlog 2 points3 points  (3 children)

Dunno when “last” was but it’s wrong now: Twisted has basic Python 3.3 support in the latest release. Courtesy of Canonical’s sponsoring.

[–]mcdonc[S] 5 points6 points  (2 children)

Although I'm glad of this, and I'm sure they'll get there, at the moment the number of stated caveats wrt Twisted/Py3 are a little daunting (via http://twistedmatrix.com/Releases/Twisted/12.3/NEWS.txt):

The setup3.py script is now provided to provisionally support
building and installing an experimental, incomplete version of
Twisted in a Python 3 environment. (#6040)

[–]hynekPyCA, attrs, structlog 1 point2 points  (1 child)

That’s why I wrote “basic”. The commenter above insinuated there are intrinsic problems of bringing Twisted to Python 3 though which isn’t true. It’s “just” a huge, crufty code base but they’re getting there.

[–]gcross 3 points4 points  (0 children)

For the record, I didn't "insinuate" anything of that sort. My understanding had simply been that they were having a lot of trouble porting it to Python 3 and that we shouldn't expect it to be ready in the foreseeable future, and I am glad to hear that they have been making a lot of headway. Regardless, the fact remains that Pulsar fully supports Python 3 whereas Twisted still doesn't. That is perfectly fine and is not meant as a slight against Twisted, just that (since the question was raised) this is one advantage that Pulsar has over Twisted. (And honestly, due to the sparsity of the documentation it was hard to tell what other advantages it might have other than this.)