UsageΒΆ

Create a Yowcelery app:

import yowsup_celery

app = YowCelery('example',
     broker='amqp://',
     #backend='amqp://',
     include=['yowsup_celery.tasks'])

You can add other layer between core layers and celery top layer:

   app.conf.update(
      TOP_LAYERS=('yowsup_ext.layers.store.layer.YowStorageLayer',)
)

Then to launch worker:

$ celery -A proj worker -P gevent -c 2 -l info --yowconfig conf_wasap

Yowsup celery worker only works with gevent and threads pools. Yowsup asyncore socket need to be shared between tasks.

You can see the new worker options: celery -A proj worker –help:

--yowconfig=CONFIG    Path to config file containing authentication info.
--yowlogin=phone:b64password
                      WhatsApp login credentials, in the format
                      phonenumber:password,                      where
                      password is base64 encoded.
--yowunmoxie          Disable E2E Encryption

Just call tasks as other celery app:

from yowsup_celery import tasks

tasks.connect.delay()
tasks.send_message.delay("341234567", "New message sent")
taks.disconnect.delay()

You can have a multiple workers for different phone numbers routing each worker to its queue:

$ celery -A proj worker -P gevent -c 2 -l info --yowconfig conf_wasap_number1 -Q number1

When calling tasks queue to the queue desired:

taks.connect.apply_async(queue="number1")

If you want to use celery as daemon just add yowconfig path in configuration:

   app.conf.update(
      YOWSUPCONFIG='path/to/yowsupconfig/file'
)