gpt4 book ai didi

Python CGI 队列

转载 作者:太空宇宙 更新时间:2023-11-03 19:27:23 26 4
gpt4 key购买 nike

我正在使用 Python 开发一个相当简单的 CGI。我即将把它放入 Django 等中。整体设置是非常标准的服务器端(即计算在服务器上完成):

  1. 用户上传数据文件并单击“运行”按钮
  2. 服务器在后台并行 fork 作业,使用大量 RAM 和处理器能力。大约 5-10 分钟后(平均用例),程序终止,并创建了其输出文件和一些 .png 图形文件。
  3. 服务器显示带有图形和一些摘要文本的网页

我认为不会有成百上千的人同时使用它;但是,因为正在进行的计算需要相当多的 RAM 和处理器能力(每个实例使用 Python 的 fork 最 CPU 密集型任务)。

我想知道您是否知道使用排队系统是否值得。我遇到了一个名为 beanstalkc 的 Python 模块,但在页面上它说它是一个“内存中”排队系统。

在这种情况下“内存中”是什么意思?我担心内存,而不仅仅是 CPU 时间,因此我想确保一次只有一个作业运行(或保存在 RAM 中,无论它是否接收 CPU 时间)。

另外,我试图决定是否

  • 结果页面(由 CGI 提供)应该告诉您它在队列中的位置(直到它运行并显示实际结果页面)



  • 用户应将其电子邮件地址提交给 CGI,完成后 CGI 会通过电子邮件向他们发送结果页面的链接。

您认为针对此类问题的轻量交通 CGI 的适当设计方法是什么?非常感谢您的建议。

最佳答案

一定使用celery 。您可以运行 amqp 服务器,或者我认为您可以将数据库作为消息队列。它允许您在后台运行任务,并且如果您愿意,它可以使用多个工作计算机来进行处理。如果您使用 django-celery,它还可以执行基于数据库的 cron 作业。

在后台运行任务就这么简单:

@task
def add(x, y):
return x + y

在一个项目中,我将工作分配到 4 台机器上,并且效果很棒

关于Python CGI 队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7629147/

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