【问题标题】:Python are not able to find files on google cloud run in productionPython 无法在生产中运行的谷歌云上找到文件
【发布时间】:2021-01-07 22:36:37
【问题描述】:

我从 api 中提取数据并在本地存储和转换它。它在我的带有 docker 的 Windows 机器上本地工作,但在云运行的生产环境中却没有。我真的不知道为什么会这样。

app.py

...

try:
    os.mkdir(os.path.join(os.getcwd(), 'tmp'))
    os.mkdir(os.path.join(os.getcwd(), 'tmp', 'cpc'))
    os.mkdir(os.path.join(os.getcwd(), 'tmp', 'cpc', 'fin'))
    os.mkdir(os.path.join(os.getcwd(), 'tmp', 'cpc', 'raw'))
    os.mkdir(os.path.join(os.getcwd(), 'tmp', 'raw'))
    os.mkdir(os.path.join(os.getcwd(), 'tmp', 'transformed'))
except:
    print ("Creation of the directory failed")

...

loader.to_json(qcdp_final, os.path.join(os.getcwd(), 'tmp', 'raw', f'{last_week_monday}.json'))

...

load.py

...

def to_json(self, data, filename):
    self.data = data
    self.filename = filename
    with open(self.filename, 'w') as outfile:
        for row in self.data:
            json.dump(row, outfile)
            outfile.write('\n')
    outfile.close()

...

堆栈跟踪

FileNotFoundError: [Errno 2] No such file or directory: '/tmp/raw/2020-09-07.json'
at to_json (load.py:44)
at download_data_from_api (extract.py:51)
at main (app.py:39)
at dispatch_request (/usr/local/lib/python3.8/site-packages/flask/app.py:1935)
at full_dispatch_request (/usr/local/lib/python3.8/site-packages/flask/app.py:1949)
at reraise (/usr/local/lib/python3.8/site-packages/flask/_compat.py:39)
at handle_user_exception (/usr/local/lib/python3.8/site-packages/flask/app.py:1820)
at full_dispatch_request (/usr/local/lib/python3.8/site-packages/flask/app.py:1951)
at wsgi_app (/usr/local/lib/python3.8/site-packages/flask/app.py:2446)

【问题讨论】:

    标签: python-3.x flask google-cloud-platform google-cloud-run


    【解决方案1】:

    在 Linux 系统上,禁止创建像 /tmp 这样的文件夹。这是为操作系统保留的。我在我的 Dockerfile 中指定了一个工作目录,就像 WORKDIR /app 一样,在这个目录中我创建了 tmp 文件夹。这样就行了。

    【讨论】:

      【解决方案2】:

      /tmp 目录不能保证在容器实例之间持久存在。如果您希望文件成为 docker 映像的一部分,则需要将它们放在其他位置。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-10-28
        • 1970-01-01
        • 2020-08-17
        • 1970-01-01
        • 1970-01-01
        • 2020-07-09
        • 1970-01-01
        相关资源
        最近更新 更多