在 Google Cloud 中部署 Python 应用程序时遇到问题

问题描述 投票:0回答:1

我正在尝试使用 Ubuntu 虚拟机在 Google Cloud 中部署 Python 应用程序。该脚本应每 1 分钟执行一次。我已经部署了它,当我手动执行它时,它运行得很好,但是,当我使用 cronjob 运行时,它返回空,但数据库中有记录。我已经更改了权限,但没有任何改变。我还使用了数据库的完整路径,但没有用。我正在使用 Peewee ORM 来处理数据库。

皮威模型

from peewee import (
    SqliteDatabase, Model, TextField, ForeignKeyField,
    DateTimeField, IntegerField, FloatField, CharField, BooleanField
)
import os
from datetime import datetime

absolute_database_path = os.path.abspath("./teste.db")
db = SqliteDatabase(absolute_database_path)

class BaseModel(Model):
    class Meta:
        database = db


class User(BaseModel):
    name = TextField()
    email = TextField(unique=True)
    phone = TextField()
    age = IntegerField()
    created_at = TextField(default=datetime.now().strftime("%d-%m-%Y"))
    updated_at = TextField(default=datetime.now().strftime("%d-%m-%Y"))

脚本

from models import User


def get_all_users():
    try:
        users_query = User.select().dicts()
        users = []
        for user in users_query:
            users.append(user)
    
        print(users)

        return users
    except Exception as e:
        message = f"Occurred an exception while retrieving users. {e}"

        print(message)
        return message
        
print(get_all_users())

Cron 作业

* * * * * /usr/local/bin/python3.9 /var/www/myscript/main.py >> /var/www/logs/logfile.log 2>&1

我尝试过更改数据库的权限,还指定了数据库的完整路径,尝试记录脚本,并尝试手动执行它。当脚本正常执行时,它会从数据库中检索用户,但是,当 cron 作业执行脚本时,它只返回空。我该如何解决这个问题?

python google-cloud-platform deployment cron peewee
1个回答
0
投票

os.path.abspath
在那里不起作用。你想要的是类似的东西:

parent = os.path.dirname(__file__)
filename = os.path.join(parent, 'test.db')
© www.soinside.com 2019 - 2024. All rights reserved.