我想全天候在服务器上运行一个Python脚本 [英] I want to run a Python Script on a Server 24/7

查看:0
本文介绍了我想全天候在服务器上运行一个Python脚本的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在编写一个模拟虚拟货币股票市场的程序。我还没有尝试任何东西,但我想要一个Python脚本在很长一段时间内全天候在线运行。Python脚本应该如下所示:

import time
import random
  
while True:
    number = random.randint(0,5)
    print(number)
    time.sleep(2)
此外,单独的本地Python程序应该能够每隔2秒持续检索number变量。我不需要一个产品或服务的推荐。我只需要知道我需要运行哪些代码,以及我需要物理服务器还是Web服务器。

如果我使用Web服务器,我将长期按月付费。此项目理论上需要在线运行数年(撇开停机和维护)。

我在服务器和网络方面几乎没有任何经验,而且我在网上找不到答案。再说一次,我还没有尝试任何东西。

推荐答案

如果您真的只想模拟它并且只有一个用户。每次用户查询时,您都可以返回一个随机数。他们询问它的频率并不重要。你可以把它放在本地或英勇的免费计划上。但是,用户每2秒查询一次意味着有很多请求,因此您可能会超过配额。

import random
from flask import Flask
import time

app = Flask(__name__)

@app.route("/")
def hello_world():
    return random.randint(0,5)

假设您在本地端口5000上进行了升级。然后,只需通过Python或浏览器转到"localhost:5000",就会得到这个随机数。

要将其提供给多个人,您需要运行一个单独的线程来生成数字。然后,该视图将返回URL处的数字。例如,

from flask import Flask
import random
import threading

app = Flask(__name__)

number = 0

@app.route("/")
def hello_world():
    """ URL returns random number """
    return str(number)


def gen_rand():
    """ generating random numbers """
    global number
    while True:
        number = random.randint(0, 5)
        time.sleep(2)

if __name__ == '__main__':
    # starting thread to generate the number
    x = threading.Thread(target=gen_rand, daemon=True)
    x.start()

    # starting web server
    app.run()
默认情况下,本地Web服务器将在本地主机5000上启动,在浏览器中转到此URL,您将看到随机生成的编号。您可以打开多个浏览器选项卡,查看如果在2秒内刷新,它们将提供相同的随机数字。

请注意,使用全局变量不是线程安全或进程安全的。您应该使用数据库或redis来更新和加载"number"。有关进一步讨论,请参阅此问题:Are global variables thread-safe in Flask? How do I share data between requests?

这篇关于我想全天候在服务器上运行一个Python脚本的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆