wallabag/docs/en/developer/asynchronous.rst

161 lines
4.3 KiB
ReStructuredText
Raw Normal View History

2016-11-06 15:15:48 +01:00
Asynchronous tasks
==================
In order to launch asynchronous tasks (useful for huge imports for example), we can use RabbitMQ or Redis.
Install RabbitMQ for asynchronous tasks
---------------------------------------
Requirements
^^^^^^^^^^^^
You need to have RabbitMQ installed on your server.
Installation
^^^^^^^^^^^^
.. code:: bash
wget https://www.rabbitmq.com/rabbitmq-signing-key-public.asc
apt-key add rabbitmq-signing-key-public.asc
apt-get update
apt-get install rabbitmq-server
Configuration and launch
^^^^^^^^^^^^^^^^^^^^^^^^
.. code:: bash
rabbitmq-plugins enable rabbitmq_management # (useful to have a web interface, available at http://localhost:15672/ (guest/guest)
rabbitmq-server -detached
Stop RabbitMQ
^^^^^^^^^^^^^
.. code:: bash
rabbitmqctl stop
Configure RabbitMQ in wallabag
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Edit your ``app/config/parameters.yml`` file to edit RabbitMQ configuration. The default one should be ok:
.. code:: yaml
rabbitmq_host: localhost
rabbitmq_port: 5672
rabbitmq_user: guest
rabbitmq_password: guest
2016-12-15 21:58:20 +01:00
rabbitmq_prefetch_count: 10 # read http://www.rabbitmq.com/consumer-prefetch.html
2016-11-06 15:15:48 +01:00
Enable RabbitMQ in wallabag
^^^^^^^^^^^^^^^^^^^^^^^^^^^
In internal settings, in the **Import** section, enable RabbitMQ (with the value 1).
Launch RabbitMQ consumer
^^^^^^^^^^^^^^^^^^^^^^^^
Depending on which service you want to import from you need to enable one (or many if you want to support many) cron job:
.. code:: bash
# for Pocket import
bin/console rabbitmq:consumer -e=prod import_pocket -w
# for Readability import
bin/console rabbitmq:consumer -e=prod import_readability -w
# for Instapaper import
bin/console rabbitmq:consumer -e=prod import_instapaper -w
# for wallabag v1 import
bin/console rabbitmq:consumer -e=prod import_wallabag_v1 -w
# for wallabag v2 import
bin/console rabbitmq:consumer -e=prod import_wallabag_v2 -w
# for Firefox import
bin/console rabbitmq:consumer -e=prod import_firefox -w
# for Chrome import
bin/console rabbitmq:consumer -e=prod import_chrome -w
Install Redis for asynchronous tasks
------------------------------------
In order to launch asynchronous tasks (useful for huge imports for example), we can use Redis.
Requirements
^^^^^^^^^^^^
You need to have Redis installed on your server.
Installation
^^^^^^^^^^^^
.. code:: bash
apt-get install redis-server
Launch
^^^^^^
The server might be already running after installing, if not you can launch it using:
.. code:: bash
redis-server
Configure Redis in wallabag
^^^^^^^^^^^^^^^^^^^^^^^^^^^
Edit your ``app/config/parameters.yml`` file to edit Redis configuration. The default one should be ok:
.. code:: yaml
redis_host: localhost
redis_port: 6379
Enable Redis in wallabag
^^^^^^^^^^^^^^^^^^^^^^^^
In internal settings, in the **Import** section, enable Redis (with the value 1).
Launch Redis consumer
^^^^^^^^^^^^^^^^^^^^^
Depending on which service you want to import from you need to enable one (or many if you want to support many) cron job:
.. code:: bash
# for Pocket import
bin/console wallabag:import:redis-worker -e=prod pocket -vv >> /path/to/wallabag/var/logs/redis-pocket.log
# for Readability import
bin/console wallabag:import:redis-worker -e=prod readability -vv >> /path/to/wallabag/var/logs/redis-readability.log
# for Instapaper import
bin/console wallabag:import:redis-worker -e=prod instapaper -vv >> /path/to/wallabag/var/logs/redis-instapaper.log
# for wallabag v1 import
bin/console wallabag:import:redis-worker -e=prod wallabag_v1 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v1.log
# for wallabag v2 import
bin/console wallabag:import:redis-worker -e=prod wallabag_v2 -vv >> /path/to/wallabag/var/logs/redis-wallabag_v2.log
# for Firefox import
bin/console wallabag:import:redis-worker -e=prod firefox -vv >> /path/to/wallabag/var/logs/redis-firefox.log
# for Chrome import
bin/console wallabag:import:redis-worker -e=prod chrome -vv >> /path/to/wallabag/var/logs/redis-chrome.log
2016-11-06 15:15:48 +01:00
If you want to launch the import only for some messages and not all, you can specify this number (here 12) and the worker will stop right after the 12th message :
.. code:: bash
bin/console wallabag:import:redis-worker -e=prod pocket -vv --maxIterations=12