确定代码是 运行 本地还是部署到 PythonAnywhere 的可靠方法是什么?
What is a reliable way to determine if code is run locally or deployed to PythonAnywhere?
我遇到过几种方法,但不知道哪一种是最可靠或经过验证的 PythonAnywhere 方法。
一些环境提供了一个环境变量,比如
os.getenv('WHEREAMI') # some cluster
os.getenv('DYNO') # Heroku
Azure 似乎使用类似
的东西
RoleEnvironment.IsAvailable
在 PythonAnywhere 上,我看到用户名
USERNAME=my_pythonanywhere_username
可以使用。或者像
subprocess.run(['hostname'])
哪个returns什么的,但我不确定这是否可靠。
还有其他方法吗?什么是一个好的选择?
这里是 PythonAnywhere 开发者 -- 这是一个很好的问题。检查您的用户名是一个很好的解决方案,但如果(例如)您的 PythonAnywhere 用户名与您在自己机器上使用的用户名相同,这当然并不理想。
如果您不使用 SSH 连接到我们的服务器,那么一个很好的替代解决方案是查看 PYTHONANYWHERE_SITE
环境变量。这将始终设置为 www.pythonanywhere.com
或 eu.pythonanywhere.com
,具体取决于您访问的是我们位于美国的网站还是位于欧盟的网站。但是,当您通过 SSH 登录时,它不会被设置。
你确实也可以看看主机名。 socket.gethostname()
可能比使用 subprocess
更快捷。您返回的主机名会随着时间的推移而变化,具体取决于您的代码所在的位置 运行ning,但它会遵循一个通用的模式。例如,如果您现在在美国 PythonAnywhere 的控制台中 运行 该代码,您将得到类似 blue-liveconsole3
的内容,而如果您从网站代码 运行 它你会得到类似 blue-liveweb20
的东西。在我们的下一次系统更新后,这些可能会更改为 green-liveconsole3
和 green-liveweb20
。通常,模式是 green
或 blue
,然后是 -
,然后是 live
(对于我们美国系统上的代码 运行ning)或 eu
(欧盟的代码 运行ning),然后是代码 运行ning 所在的服务器类型,然后是一个数字。
我遇到过几种方法,但不知道哪一种是最可靠或经过验证的 PythonAnywhere 方法。
一些环境提供了一个环境变量,比如
os.getenv('WHEREAMI') # some cluster
os.getenv('DYNO') # Heroku
Azure 似乎使用类似
的东西RoleEnvironment.IsAvailable
在 PythonAnywhere 上,我看到用户名
USERNAME=my_pythonanywhere_username
可以使用。或者像
subprocess.run(['hostname'])
哪个returns什么的,但我不确定这是否可靠。
还有其他方法吗?什么是一个好的选择?
这里是 PythonAnywhere 开发者 -- 这是一个很好的问题。检查您的用户名是一个很好的解决方案,但如果(例如)您的 PythonAnywhere 用户名与您在自己机器上使用的用户名相同,这当然并不理想。
如果您不使用 SSH 连接到我们的服务器,那么一个很好的替代解决方案是查看 PYTHONANYWHERE_SITE
环境变量。这将始终设置为 www.pythonanywhere.com
或 eu.pythonanywhere.com
,具体取决于您访问的是我们位于美国的网站还是位于欧盟的网站。但是,当您通过 SSH 登录时,它不会被设置。
你确实也可以看看主机名。 socket.gethostname()
可能比使用 subprocess
更快捷。您返回的主机名会随着时间的推移而变化,具体取决于您的代码所在的位置 运行ning,但它会遵循一个通用的模式。例如,如果您现在在美国 PythonAnywhere 的控制台中 运行 该代码,您将得到类似 blue-liveconsole3
的内容,而如果您从网站代码 运行 它你会得到类似 blue-liveweb20
的东西。在我们的下一次系统更新后,这些可能会更改为 green-liveconsole3
和 green-liveweb20
。通常,模式是 green
或 blue
,然后是 -
,然后是 live
(对于我们美国系统上的代码 运行ning)或 eu
(欧盟的代码 运行ning),然后是代码 运行ning 所在的服务器类型,然后是一个数字。