我试图使用libfaketime来阻止程序(tbl2asn)过期。此程序在Django视图中调用。Django服务器位于docker容器中,通过docker compose设置以下环境变量:
environment:
LD_PRELOAD: "/path/to/libfaketime.so.1"
DONT_FAKE_MONOTONIC: 1
FAKETIME_DID_REEXEC: "true"
当我使用docker exec进入容器并从命令行运行python时,libfaketime工作得非常好。但是,当从Django视图调用它时,它不会更改日期,并且程序无法执行
从视图中调用的代码:
import os
from libfaketime import fake_time
import subprocess
with fake_time('2018-01-01 00:00:01'):
print(datetime.datetime.now())
print(os.environ)
subprocess.run([command])
这将产生以下输出:
2020-12-01 14:00:18.037169
environ({'PATH': ..., 'HOSTNAME': ..., 'LD_PRELOAD': '/path/to/libfaketime.so.1', 'DONT_FAKE_MONOTONIC': 1, 'FAKETIME_DID_REEXEC': 'true', 'HTTPD_PREFIX': '/usr/local/apache2', 'HTTPD_VERSION': '2.4.46', 'HTTPD_SHA256': ..., 'HTTPD_PATCHES': '', 'HOME': '/root', 'LC_CTYPE': 'C.UTF-8', 'TZ': 'America/New_York', , 'RUN_MAIN': 'true'})
并且在运行子流程命令时也会产生错误([tbl2asn]此tbl2asn副本已存在一年多。请下载当前版本。)
目前没有回答
相关问题 更多 >
编程相关推荐