如何在云端托管Python项目(特别是Google Cloud Platform)

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

我有一个关于在云服务器上托管个人项目的非常简单(我认为)的问题。目前,我每天早上都手动运行我的脚本。我想通过在云服务器上安排此脚本的运行来自动化此过程,以便我可以“设置它并忘记”。

项目详细信息:我有一个项目,从各个网站抓取 NBA 数据,并为当天的每场比赛做出选择。它会发布这些选择并将选择保存到 sqlite 数据库中,以便它可以在下次运行时检查选择。以下是该项目的结构。

twitterBot
├── __pycache__
│   ├── config.cpython-311.pyc
│   └── twitter.cpython-311.pyc
├── config.py
├── main.py
├── nba_models
│   ├── __init__.py
│   ├── __pycache__
│   │   ├── __init__.cpython-311.pyc
│   │   ├── config.cpython-311.pyc
│   │   └── get_picks.cpython-311.pyc
│   ├── get_picks.py
│   ├── nba_pick_data_2023.db
│   ├── nba_pick_recent_data_2023.db
│   ├── nba_scraper
│   │   ├── __init__.py
│   │   ├── __pycache__
│   │   │   ├── __init__.cpython-311.pyc
│   │   │   └── scraper.cpython-311.pyc
│   │   └── scraper.py
│   └── vegas
│       ├── __init__.py
│       ├── __pycache__
│       │   ├── __init__.cpython-311.pyc
│       │   └── vegas.cpython-311.pyc
│       └── vegas.py
├── test.ipynb
└── twitter.py

由于该项目有点复杂,下面是该项目的简化版本,其中包含大部分基础知识。我将使用这个目录来测试/掌握我最终使用的任何服务。

cloudTest 是根目录,包含以下文件。

cloudTest
├── __pycache__
│   └── config.cpython-311.pyc
├── config.py
├── example.db
├── pic.png
└── test.py

test.py
如下,包含我的主项目所具有的大部分功能。

import sqlite3
import os
import tweepy
import config

# Creates and insert some data in sqlite database
current_directory = os.getcwd()
db_file_path = os.path.join(current_directory, 'example.db')
conn = sqlite3.connect(db_file_path)
cur = conn.cursor()

table_creation_query = '''
CREATE TABLE IF NOT EXISTS example_table (
    id INTEGER PRIMARY KEY,
    name TEXT,
    age INTEGER
);
'''
cur.execute(table_creation_query)

# Get the maximum existing ID
max_id_query = 'SELECT MAX(id) FROM example_table'
cur.execute(max_id_query)
max_id = cur.fetchone()[0]

# Generate new data programmatically
new_name = "New User"
new_age = 25

# Increment the ID for the new row
new_id = max_id + 1 if max_id is not None else 1

# Insert new data into the table
insert_query = 'INSERT INTO example_table (id, name, age) VALUES (?, ?, ?)'
cur.execute(insert_query, (new_id, new_name, new_age))

# Commit the changes and close the connection

cur.execute(f"select * from example_table where id = {new_id}")
new_data = cur.fetchone()
conn.commit()
conn.close()


auth = tweepy.OAuth1UserHandler(config.CONSUMER_KEY, config.CONSUMER_SECRET)
auth.set_access_token(config.ACCESS_TOKEN, config.ACCESS_TOKEN_SECRET)
api = tweepy.API(auth)

client = tweepy.Client(
            consumer_key=config.CONSUMER_KEY,
            consumer_secret=config.CONSUMER_SECRET,
            access_token=config.ACCESS_TOKEN,
            access_token_secret=config.ACCESS_TOKEN_SECRET,
        )


media = api.simple_upload(f"{current_directory}/pic.png")
client.create_tweet(text=f"Just inserted {new_data}", media_ids=[media.media_id])

我尝试在网上寻找答案,但我对云提供商/外部服务器不太熟悉,所以我不知道从哪里开始。起初我认为这是一个相对简单的问题,但经过一番研究后发现它很复杂。有人能指出我正确的方向吗?有关于这个主题的好资源吗?

以下是一些可能有用的详细信息:

  • 我刚刚创建了一个 GCP 帐户,并有 300 美元可供使用。

  • 我已经看到很多关于 Google Functions 此类工作的建议,但我认为我的项目可能太大了。我定义了两个嵌套在另一个包中的 python 包。我也不确定 sqlite 数据库在 Google Functions 中如何工作。我安装/使用了多个不附带默认 python 的软件包。但如果有人认为这是正确的想法,请告诉我。我也

  • 我看到了有关 digitalOcean 之类的建议。这是正确的路线吗?

如果需要更多详细信息,请告诉我。我感谢任何和所有的帮助。

python server cloud scheduling host
1个回答
0
投票

如果你想定期运行你的程序,只需在服务器控制台中通过以下命令创建 Crontab 任务:

EDITOR=nano crontab -e

“nano”可以替换为您自己喜欢的编辑器名称 - 例如“vi”或“mcedit”。

在编辑器中,键入此行(将 /home/ubuntu 替换为实际路径):

30 6 * * * /home/ubuntu/cloudTest/test.py

保存,退出,享受吧!

当然,test.py 必须是可执行的:

chmod +x test.py

如果您想了解更多有关 Cron 的信息,请从这里开始:https://en.wikipedia.org/wiki/Cron

© www.soinside.com 2019 - 2024. All rights reserved.