The Lino Daemon¶
This document explains how to install
linod as a service on
a production server.
A Lino application can declare background tasks. Such tasks run in the
background, i.e. in another process than the web server. That other process runs
linod admin command.
linod command will simply do nothing as long as this is
As an application developer you define background tasks using
dd.schedule_daily. For example the
clear_seen_messages of the
Starts a long-running process that runs scheduled background tasks.
On a development machine you simply run this in a separate terminal. On a production server we recommend to run this as a daemon via Supervisor as described below.
This command does nothing when
use_linod is False.
Requires the schedule package¶
Note the nice story of that package by its author : In Love, War, and Open-Source: Never Give Up
Activating the feature¶
>>> from atelier.sheller import Sheller >>> shell = Sheller("lino_book/projects/roger") >>> shell("python manage.py linod --list") This site does not use linod.
As a system administrator you can check whether your application has scheduled background jobs by issuing the following command in your project directory:
$ python manage.py linod --list
For example in the
team demo project
there are 7 jobs:
>>> shell = Sheller("lino_book/projects/team") >>> shell("python manage.py linod --list") ... 7 scheduled jobs:  Every 1 day at 20:00:00 do checksummaries() (last run: [never], next run: ...)  Every 1 day at 20:00:00 do checkdata() (last run: [never], next run: ...)  Every 10 seconds do send_pending_emails_often() (last run: [never], next run: ...)  Every 1 day at 20:00:00 do send_pending_emails_daily() (last run: [never], next run: ...)  Every 1 day at 20:00:00 do clear_seen_messages() (last run: [never], next run: ...)  Every 3600 seconds do update_all_repos() (last run: [never], next run: ...)  Every 10 seconds do get_new_mail() (last run: [never], next run: ...)
This section has become useless because these things are now done automatically by getlino.
Install the Supervisor package:
$ sudo apt install supervisor
The supervisor package is being installed system-wide, it is not related to any specific project.
Create a shell script
linod.shin your project directory:
#!/bin/bash set -e # exit on error cd /path/to/myprj . env/bin/activate exec python manage.py linod
Create a file
/etc/supervisor/conf.d/with this content:
[program:linod_myprj] command = /path/to/myprj/linod.sh username = www-data umask = 002
$ sudo service supervisor restart
Have a look at the log files in