如何在数据库中存储数据以识别在服务器上启动的进程

时间:2016-12-04 14:13:38

标签: python mysql flask mysql-python

您能告诉我如何在数据库中存储数据以识别在服务器上启动的进程吗?

代码如下。

我在Cloud 9上使用MySQL数据库在Flask(python)上运行它。

为了提高,我不想使用会话cookie来识别进程而是使用数据库。

from multiprocessing import Process
from time import sleep

import psutil
from flask import Flask, redirect, session, url_for


app = Flask(__name__)
app.secret_key = 'f\xa9\x85\xf0\xe9\x982\xc4\xf8\xa0k\x91\xa7\xef\x12y'


@app.route('/')
def index():
    return (
        '<form action="/work/start" method="POST">'
            '<input type="submit" value="Start">'
        '</form>'
        '<form action="/work/stop" method="POST">'
        '<input type="submit" value="Stop">'
        '</form>'
    )


def work_it():
    while True:
        print('working...')
        sleep(1)

@app.route('/work/start', methods=['POST'])
def start_work():
    if 'work_process' not in session:
        process = Process(target=work_it)
        process.start()
        pid = process.pid
        parent_pid = psutil.Process(process.pid).parent().pid
        session['work_process'] = (parent_pid, pid)
     return redirect(url_for('index'))


@app.route('/work/stop', methods=['POST'])
def stop_work():
    if 'work_process' in session:
        parent_pid, pid = session['work_process']
        try:
            process = psutil.Process(pid)
            if process.parent().pid == parent_pid:
                process.terminate()
        except psutil.NoSuchProcess:
            pass
        session.pop('work_process')
    return redirect(url_for('index'))

1 个答案:

答案 0 :(得分:0)

您能解释一下为什么需要在服务器上启动身份进程。 如果你只想录制它。我认为您可以创建一个表,其中包含有关进程的信息,然后在服务器上启动进程之前插入记录。例如:INSERT INTO tbl_process(ProcessID,StartedFrom)VALUES('1','Server')。

我误解了你的问题吗?