summaryrefslogtreecommitdiff
path: root/Run/Que/index.md
blob: b619de76cfe3dd331de179135f1cec6ce139bf92 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
% que.run

que is the concurrent, async runtime in the cloud

  - runtime concurrency anywhere you have a network connection
  - multilanguage communicating sequential processes
  - add Go-like channels to any language
  - connect your microservices together with the simplest possible
    plumbing
  - async programming as easy as running two terminal commands

HTTP routes on que.run are Golang-like channels with a namespace and a
path. For example: `https://que.run/example/path/subpath`.

## download the client

There is a simple script `que` that acts as a client you can use to
interact with the `que.run` service.

Download it to somewhere on your `$PATH` and make it executable:

    curl https://que.run/_client/python > ~/bin/que
    chmod +x ~/bin/que
    que --help

The client requires a recent version of Python 3.

## examples

Here are some example applications, I will update these in the coming
weeks with additional useful scripts.

### desktop notifications

Lets say we are running a job that takes a long time, maybe we are
compiling or running a large test suite. Instead of watching the
terminal until it completes, or flipping back to check on it every so
often, we can create a listener that displays a popup notification when
the job finishes.

In one terminal run the listener:

    que example/notify --then "notify-send '\que' '\msg'"

In some other terminal run the job that takes forever:

    runtests ; echo "tests are done" | que example/notify -

When terminal 2 succeeds, terminal 1 will print "tests are done", then
call the `notify-send` command, which displays a notification toast in
Linux with title "`example/notify`" and content "`tests are done`".

Que paths are multi-producer and multi-consumer, so you can add as many
terminals as you want.

On macOS you could use:

    osascript -e 'display notification "\msg" with title "\que"'

in place of notify-send.

### ephemeral, serverless chat rooms

coming soon...

### collaborative jukebox

coming soon...