skip to navigation
skip to content

Not Logged In

mixpanel-py-async 0.0.2

Python library for using Mixpanel asynchronously

mixpanel-python-async
=====================

This library allows for using the Mixpanel python client in an
asynchronous way. Using the AsyncBufferedConsumer, events sent to the
Mixpanel API will be batched and then flushed in a thread without
blocking the main thread. This is extremely useful in a request/response
scenario where response time is important.

This library was originally created for use at
`Clef <https://getclef.com>`__ and is in production use there.

Installation
------------

The library can be installed using pip:

::

    pip install mixpanel-py-async

Getting Started
---------------

Typical usage usually looks like this:

::

    #!/usr/bin/env python
    from mixpanel import Mixpanel
    from mixpanel_async import AsynBufferedConsumer

    mp = Mixpanel(YOUR_TOKEN, consumer=AsyncBufferedConsumer())

    # tracks an event with certain properties
    mp.track('button clicked', {'color' : 'blue', 'size': 'large'})

    # sends an update to a user profile
    mp.people_set(USER_ID, {'$first_name' : 'Amy', 'favorite color': 'red'})

These events will be batched and then sent in a seperate, asynchronous
thread.

Configuration
~~~~~~~~~~~~~

For most users, the default configuration should work perfectly. For
more specific needs, AsyncBufferedConsumer has a variety of
configuration options, which you can use to manage how it batches and
sends API requests.

-  ``flush_after (datetime.timedelta)`` - *defaults to 10 seconds* - the
   time period after which the AsyncBufferedConsumer will flush the
   events upon receiving a new event (no matter what the event queue
   size is)

-  ``flush_first (bool)`` - *defaults to True* - whether the consumer
   should always flush the first event.

-  ``max_size (int)`` - *defaults to 20* - how big a given event queue
   can get before it is flushed by the consumer

-  ``events_url (str)`` - *defaults to standard Mixpanel API URL* - the
   Mixpanel API URL that track events will be sent to

-  ``people_url (str)`` - *defaults to standard Mixpanel API URL* - the
   Mixpanel API URL that people events will be sent to

Usage
~~~~~

Typically, after configuring the AsyncBufferedConsumer and passing it to
the Mixpanel object, you will never have to use it again. That said,
there are a few methods which can be useful.

-  ``flush()`` - tells the AsyncBufferedConsumer to flush all of the
   events in its queues. If you call it with ``async=False`` this flush
   will happen in the main thread (useful for ensuring all events are
   sent before a process ends)

.. code:: python

    #!/usr/bin/env python
    from mixpanel import Mixpanel
    from mixpanel_async import AsynBufferedConsumer

    consumer = AsyncBufferedConsumer()
    mixpanel = Mixpanel(YOUR_TOKEN, consumer=consumer)

    # tracks an event with certain properties
    mp.track('button clicked', {'color' : 'blue', 'size': 'large'})

    consumer.flush(async=False)
    # all events are flushed and process ends

Bugs
----

If you find an issue, let us know in the issues section!

Contributing
------------

From the `Rubinius <http://rubini.us/>`__ contribution page:

    Writing code and participating should be fun, not an exercise in
    perseverance. Stringent commit polices, for whatever their other
    qualities may bring, also mean longer turnaround times.

Submit a patch and once it's accepted, you'll get commit access to the
repository. Feel free to fork the repository and send a pull request,
once it's merged in you'll get added. If not, feel free to bug
`jessepollak <http://github.com/jessepollak>`__ about it.

How To Contribute
-----------------

-  Clone: ``git@github.com:jessepollak/mixpanel-python-async.git``
-  Create a topic branch: ``git checkout -b awesome_feature``
-  Commit away (and add unit tests for any code your write).
-  Keep up to date: ``git fetch && git rebase origin/master``.
-  Run the tests: ``python setup.py test``

Once you're ready:

-  Fork the project on GitHub
-  Add your repository as a remote:
   ``git remote add your_remote your_repo``
-  Push up your branch: ``git push your_remote awesome_feature``
-  Create a Pull Request for the topic branch, asking for review.

Once it's accepted:

-  If you want access to the core repository feel free to ask! Then you
   can change origin to point to the Read+Write URL:

::

    git remote set-url origin git@github.com:jessepollak/mixpanel-python-async.git

Otherwise, you can continue to hack away in your own fork.

*thanks to `rubygems <https://github.com/rubygems/rubygems.org>`__ for
inspiration of our guidelines*

Additional Information
----------------------

| `Mixpanel python
docs <https://www.mixpanel.com/help/reference/python>`__
| `Mixpanel client
libary <http://mixpanel.github.io/mixpanel-python/>`__
 
File Type Py Version Uploaded on Size
mixpanel-py-async-0.0.2.macosx-10.9-intel.tar.gz (md5)
built for Darwin-13.0.0
"dumb" binary any 2014-02-19 7KB
mixpanel-py-async-0.0.2.tar.gz (md5) Source 2014-02-19 5KB
  • Downloads (All Versions):
  • 4 downloads in the last day
  • 79 downloads in the last week
  • 436 downloads in the last month