我想全天候在服务器上运行一个Python脚本 [英] I want to run a Python Script on a Server 24/7
本文介绍了我想全天候在服务器上运行一个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屋!
查看全文