KimuraSouki
@KimuraSouki (蒼季 木村)

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

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
権限など問題なく、ジョブの詳細ページを開くと完了と出ています
スクリーンショット 2023-01-30 23.00.07.png

しかし出力先には「実験.csv」の文字はありません
スクリーンショット 2023-01-30 23.12.15.png

何が問題なのかわかりません。
よろしくお願いします。

0

No Answers yet.

Your answer might help someone💌