Как правильно реализовать многопоточный демон с REST API?
1. API REST, как правило, именно stateless. То есть каждый вызов API совершенно не зависит от другого.
Таким образом, вся многопоточность остается внутри, а не на вашем REST API
2. Самое большое неудобство для программирования - это блокировки/синхронизации. То есть когда вы используете общие ресурсы, которые не позволяют обращаться к ним конкурентно-параллельно, такие нужно блокировать на время использования. Но эти блокировки, в свою очередь, могут вызвать deadlock. 
Блокировать нужно не забывать. Но нужно это делать минимально, только когда нужно. Например, возможно, достаточно будет не exclusive lock, а всего лишь rw-lock на read.
3. Реализовать проще на том, что лучше знаешь. Я бы выбрал Go, но это я. Реализовывать нужно на том, что лучше знаешь лично ты.
Нашел фреймворк bottle и примерную реализацию того, что хотел сделать. Один процесс обрабатывает апи а второй что то делает в фоне. Надеюсь никаких неприятностей не возникнет при такой работе.from multiprocessing import Process
from bottle import Bottle, run
import time
import os

app = Bottle()


@app.route('/')
def index():
    return 'Hello !'


def child():
    while True:
        time.sleep(10)
        pid = str(os.getpid())
        print(pid + ' PID \n')


def api():
    run(app, host='localhost', port=8000)


def main():
    process1 = Process(target=child, args=())
    process2 = Process(target=api, args=())

    process1.start()
    process2.start()

if __name__ == '__main__':
    main()