Difference between revisions of "Celery"
Jump to navigation
Jump to search
Rafahsolis (talk | contribs) |
Rafahsolis (talk | contribs) |
||
| Line 26: | Line 26: | ||
== Launch == | == Launch == | ||
celery -A {ProjectName} worker -l info --queues=queuename1,queuename2 | celery -A {ProjectName} worker -l info --queues=queuename1,queuename2 | ||
| + | |||
| + | == Run task at specific time == | ||
| + | <source lang="Python">import datetime | ||
| + | |||
| + | import celery | ||
| + | |||
| + | @celery.shared_task(bind=True) | ||
| + | def add_tag(task, user_id, tag): | ||
| + | User.objects.filter(id=user_id, tags__ne=tag).update(push__tags=tag) | ||
| + | return True | ||
| + | |||
| + | user_id = '582ee32a5b9c861c87dc297e' | ||
| + | tag = 'new_tag' | ||
| + | started_at = datetime.datetime(2018, 3, 12, tzinfo=datetime.timezone.utc) | ||
| + | add_tag.apply_async((user_id, tag), eta=started_at)</source> | ||
Revision as of 13:59, 3 September 2018
Install
pip install Celery
Create Virtual Host and User
sudo rabbitmqctl add_user <username> <password> sudo rabbitmqctl add_vhost <vhostname> sudo rabbitmqctl set_permissions -p <vhostname> <username> ".*" ".*" ".*"
With RabbitMQ
sudo apt-get install rabbitmq-server # Create rabbitmq user sudo rabbitmqctl add_user myuser mypassword # Create rabbitmq vhost sudo rabbitmqctl add_vhost myvhost sudo rabbitmqctl set_user_tags myuser mytag sudo rabbitmqctl set_permissions -p myvhost myuser ".*" ".*" ".*"
Starting/Stopping the RabbitMQ server To start the server: $ sudo rabbitmq-server you can also run it in the background by adding the -detached option (note: only one dash): $ sudo rabbitmq-server -detached Never use kill to stop the RabbitMQ server, but rather use the rabbitmqctl command: $ sudo rabbitmqctl stop
Workers
Launch
celery -A {ProjectName} worker -l info --queues=queuename1,queuename2
Run task at specific time
import datetime
import celery
@celery.shared_task(bind=True)
def add_tag(task, user_id, tag):
User.objects.filter(id=user_id, tags__ne=tag).update(push__tags=tag)
return True
user_id = '582ee32a5b9c861c87dc297e'
tag = 'new_tag'
started_at = datetime.datetime(2018, 3, 12, tzinfo=datetime.timezone.utc)
add_tag.apply_async((user_id, tag), eta=started_at)