我想 运行 Python 服务器上的脚本 24/7
I want to run a Python Script on a Server 24/7
我正在制作一个模拟虚拟货币股票市场的程序。我还没有尝试过任何东西,但我想要一个 Python 脚本来 运行 24/7 在线很长一段时间。 python 脚本应该是这样的:
import time
import random
while True:
number = random.randint(0,5)
print(number)
time.sleep(2)
此外,一个单独的本地 Python 程序应该能够每 2 秒不断地检索 number
变量。我不需要对产品或服务的推荐。我只需要知道我需要什么代码 运行 以及我是否需要物理服务器或网络服务器。
如果我使用网络服务器,我将长期按月付费。这个项目理论上需要 运行 在线年(撇开停机和维护)。
我对服务器和网络几乎没有任何经验,在网上找不到答案。同样,我还没有尝试过任何东西。
听起来很有趣。不应该花费你任何东西。流行的无服务器选项(Azure Functions、AWS Lambda 等)每月提供 100 万次免费调用。
如果我没记错的话,Google的Cloud Function是2M。
有一个很好的 IDE replit.com 在那里你可以 运行 你的 python 但如果你想 运行 它 24/7 你有要获得“黑客”计划,如果您将 github 教育包连接到您的 replit 帐户,您可以免费获得该计划,如果您在大学或高中持有学生证,则此包也是免费的。您可以通过在代码中添加保持活动脚本来解决此问题。它有相当快的服务器,几乎没有停机时间。
如果你真的只想模拟它并且只有一个用户。每次用户进行查询时,您可以 return 一个随机数。他们查询的频率无关紧要。您可以将其放在本地或英雄免费计划中。但是用户每 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”,或者浏览器会给你那个随机数。
要为多人提供服务,您需要一个单独的线程 运行 生成号码。然后,视图将 return 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()
默认情况下,本地网络服务器将从 localhost:5000 开始,在您的浏览器中转到此 URL,您将看到随机生成的编号。您可以打开多个浏览器选项卡,如果在 2 秒内刷新,它们将给出相同的随机数。
请注意,使用全局变量不是 thread-safe 或进程安全的。你应该使用数据库或redis来更新和加载“number”。请参阅此问题以进行进一步讨论:.
我正在制作一个模拟虚拟货币股票市场的程序。我还没有尝试过任何东西,但我想要一个 Python 脚本来 运行 24/7 在线很长一段时间。 python 脚本应该是这样的:
import time
import random
while True:
number = random.randint(0,5)
print(number)
time.sleep(2)
此外,一个单独的本地 Python 程序应该能够每 2 秒不断地检索 number
变量。我不需要对产品或服务的推荐。我只需要知道我需要什么代码 运行 以及我是否需要物理服务器或网络服务器。
如果我使用网络服务器,我将长期按月付费。这个项目理论上需要 运行 在线年(撇开停机和维护)。
我对服务器和网络几乎没有任何经验,在网上找不到答案。同样,我还没有尝试过任何东西。
听起来很有趣。不应该花费你任何东西。流行的无服务器选项(Azure Functions、AWS Lambda 等)每月提供 100 万次免费调用。
如果我没记错的话,Google的Cloud Function是2M。
有一个很好的 IDE replit.com 在那里你可以 运行 你的 python 但如果你想 运行 它 24/7 你有要获得“黑客”计划,如果您将 github 教育包连接到您的 replit 帐户,您可以免费获得该计划,如果您在大学或高中持有学生证,则此包也是免费的。您可以通过在代码中添加保持活动脚本来解决此问题。它有相当快的服务器,几乎没有停机时间。
如果你真的只想模拟它并且只有一个用户。每次用户进行查询时,您可以 return 一个随机数。他们查询的频率无关紧要。您可以将其放在本地或英雄免费计划中。但是用户每 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”,或者浏览器会给你那个随机数。
要为多人提供服务,您需要一个单独的线程 运行 生成号码。然后,视图将 return 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()
默认情况下,本地网络服务器将从 localhost:5000 开始,在您的浏览器中转到此 URL,您将看到随机生成的编号。您可以打开多个浏览器选项卡,如果在 2 秒内刷新,它们将给出相同的随机数。
请注意,使用全局变量不是 thread-safe 或进程安全的。你应该使用数据库或redis来更新和加载“number”。请参阅此问题以进行进一步讨论: