Pulsar 0.7 has a patchy support for synchronous API.
The 0.8 release, currently under development, has improved enormously how synchronous calls are handled and allows to use pulsar internals with any synchronous code.
I will push to the dev branch the 0.8 release very soon.
In the mean time you can try the following:
* in your function create a new event loop
from pulsar.utils.pep import new_event_loop
loop = new_event_loop(iothreadloop=False)
* use this loop to execute pulsar asynchronous internals via the ``run_until_complete`` method.