cloud runのジョブの実行方法
解決したいこと
csvファイルを出力するmain.pyをcloud shellのRunタブにある「start debugging」で実行すると成功するが、cloud runのjobで実行すると成功と書かれていてもファイルが出力されていない。出力されるようにしたい。
使用しているファイル
python
①main.py(csvを読み込み→スクレイピングしてcsvに追記→実験.csvをcloud storageに出力)
import json
import os
import sys
import time
import random
import requests
import io
from bs4 import BeautifulSoup
import pandas as pd
from google.cloud import storage
def get_soup(url):
user_agent = [
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.2 Safari/605.1.15',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.1 Safari/605.1.15',
'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36',
'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36']
UA = user_agent[random.randrange(0, len(user_agent))]
res = requests.get(url,headers={'User-Agent':UA})
return BeautifulSoup(res.text,'html.parser')
def read_csv_from_gcs(bucket_name, source_blob_name):
"""Reads a CSV file from the specified Google Cloud Storage bucket."""
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(source_blob_name)
contents = blob.download_as_string()
df = pd.read_csv(io.StringIO(contents.decode('utf-8')),index_col=0)
return df
def upload_to_gcs(file_path, bucket_name, destination_blob_name):
"""Uploads a file to the specified Google Cloud Storage bucket."""
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(destination_blob_name)
blob.upload_from_filename(file_path)
print(f'File {file_path} uploaded to {destination_blob_name} in bucket {bucket_name}.')
# Start script
if __name__ == "__main__":
soup=get_soup('https://www.murasaki.jp/category/SN_GOODS/010101JJ1221107.html')
item_name=soup.find('h2',class_='item_name').text
print(item_name)
# Call the function with the bucket name and the desired source file name
df = read_csv_from_gcs('dsignup', 'ムラサキスポーツ_dailyDB_20230115.csv')
df = df['商品名']
df.loc[len(df)]=[item_name]
output='実験.csv'
df.to_csv(output)
# Call the function with the file path, bucket name, and desired destination file name
upload_to_gcs(output, 'dsignup', output)
②Procfile(job実行時に必要)
web: python3 main.py
cloud runにて自分で試したこと
google cloudのチュートリアル「Cloud Run で Python ジョブをビルドして作成する」に沿って実行しています。
https://cloud.google.com/run/docs/quickstarts/jobs/build-create-python?hl=ja
①jobディレクトリの作成
②main.pyの作成
③Procfileの作成
④buildpackを使用してコンテナをビルド
⑤ジョブを作成
⑥ターミナルにて以下のコードでジョブを実行
gcloud beta run jobs execute job-quickstart
権限など問題なく、ジョブの詳細ページを開くと完了と出ています
何が問題なのかわかりません。
よろしくお願いします。
0