确定代码是在本地运行还是部署到pythonywhere的可靠方法是什么?

2024-06-16 10:10:10 发布

您现在位置:Python中文网/ 问答频道 /正文

我遇到了几种方法,但不知道哪一种是最可靠的或最有效的

有些环境提供了一个环境变量,如

os.getenv('WHEREAMI') # some cluster

os.getenv('DYNO') # Heroku

Azure似乎使用了类似

RoleEnvironment.IsAvailable

在Pythony上我看到用户名

USERNAME=my_pythonanywhere_username

可以使用。或者类似的

subprocess.run(['hostname'])

它返回了一些东西,但我不确定这是否可靠

还有其他方法吗?什么是好的选择


Tags: 方法heroku环境os环境变量someazure用户名
1条回答
网友
1楼 · 发布于 2024-06-16 10:10:10

Pythony这里是一个很好的问题。检查您的用户名是一个很好的解决方案,但是如果(例如)您的PythonyWhere用户名与您在自己的机器上使用的用户名相同,那么当然这并不理想

如果您没有使用SSH连接到我们的服务器,那么一个好的替代解决方案是查看PYTHONANYWHERE_SITE环境变量。这将始终设置为www.pythonanywhere.comeu.pythonanywhere.com,具体取决于您是在我们的美国网站上还是在我们的欧盟网站上。但是,当您通过SSH登录时,它不会被设置

您还可以查看主机名socket.gethostname()可能是比用{}炮击更快的方法。返回的主机名会随着时间的推移而变化,这取决于代码运行的位置,但它将遵循一种常见模式。例如,如果您现在在美国Pythonywhere的控制台中运行该代码,您将得到类似blue-liveconsole3的代码,而如果您从网站的代码运行它,您将得到类似blue-liveweb20的代码。在下一次系统更新之后,这些可能会更改为green-liveconsole3green-liveweb20。通常,模式是greenblue,然后是-,然后是live(对于在美国系统上运行的代码)或eu(对于在欧盟运行的代码),然后是代码运行的服务器类型,然后是一个数字

相关问题 更多 >