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

代码如下。

我在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'))

最佳答案

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

我误会了你的问题吗?

10-01 00:28
查看更多