gpt4 book ai didi

Python - 使用 HTTPServer 处理并发 POST 请求并保存到文件

转载 作者:太空宇宙 更新时间:2023-11-03 21:21:04 24 4
gpt4 key购买 nike

我有下面的代码,我想用它来接收带有数据的 POST 请求,然后我将使用这些数据在标签打印机上打印标签。为了打印标签,我需要使用打印命令编写一个文件,然后通过命令行执行 lp 命令将文件复制到标签打印机。

我遇到的问题是多人可以同时打印标签。所以我的问题是我是否必须更改下面的代码以使用 ThreadingMixIn 才能处理并发 POST 请求,或者我可以按原样保留代码吗?并发场景(即任何进一步的请求将排队并且不会丢失)?

如果我必须采用线程方式,如果现在有多个线程尝试写入同一个文件,这会如何影响文件的写入以及对 lp 的后续命令行调用?

请注意,有多个标签打印机通过打印队列 (CUPS) 进行访问。

import json
from http.server import HTTPServer, BaseHTTPRequestHandler
from io import BytesIO

class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.end_headers()
self.wfile.write(b'Hello, world!')
def do_POST(self):
content_length = int(self.headers['Content-Length'])
body = self.rfile.read(content_length)
try:
result = json.loads(body, encoding='utf-8')
self.send_response(200)
self.end_headers()
response = BytesIO()
response.write(b'This is POST request. ')
response.write(b'Received: ')
response.write(body)
self.wfile.write(response.getvalue())
except Exception as exc:
self.wfile.write('Request has failed to process. Error: %s', exc.message)

httpd = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
httpd.serve_forever()

最佳答案

为什么不尝试使用唯一的文件名?这样您就可以确保不会出现名称冲突。看看https://docs.python.org/2/library/tempfile.html ,考虑NamedTemporaryFile函数。您应该使用delete=False,否则文件将在 close() 之后立即删除。

关于Python - 使用 HTTPServer 处理并发 POST 请求并保存到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54250171/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com