質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

cloud functionsで関数のテストをするとエラーが出る

emememem
emememem

総合スコア1

Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0グッド

1クリップ

289閲覧

投稿2022/11/28 08:57

編集2022/11/29 09:42

前提

実現したいこと

あるwebサイトのhtmlを取得
→クラスを指定して要素を取得
→これを定期実行
→要素が変化したら(サイトが更新されたら)trueを返す
というプログラムを作成しています。
定期実行に関してはをgoogleのcloud functionsのpubsubトリガーで行います。

発生している問題・エラーメッセージ

コードはgoogle colaboratoryで実行するとうまくいきました。
しかしcloud functionsでデプロイ後,関数をテストすると下記のエラーが出ます。

Error: function terminated. Recommended action: inspect logs for termination reason. Additional troubleshooting documentation can be found at https://cloud.google.com/functions/docs/troubleshooting#logging Details:500 Internal Server Error: The server encountered an internal error and was unable to complete your request. Either the server is overloaded or there is an error in the application.

該当のソースコード

言語はpythonです。

from bs4 import BeautifulSoup import requests def detect_updates(): url = "webサイトのurl" res = requests.get(url) soup = BeautifulSoup(res.text,'html.parser') #new_elemに取得したclassの要素を入れる new_elem = str(soup.select(".クラス名")) #old_elem.txtに入っているclassの要素をold_elemに入れる try: with open("old_elem.txt") as f: old_elem = f.read() except: old_elem = "" #old_elemとnew_elemを比較 if new_elem == old_elem: return False else: with open("old_elem.txt","w") as f: f.write(new_elem) return True

試したこと

ログを見たところ,これが原因の文章かと思われます。
TypeError: detect_updates() takes 0 positional arguments but 2 were given

コメントアウトなどして原因箇所を探ってみましたが,分からず。
最終的に下記のコードでテストしても同じエラーが出てきました。

def detect_updates(): print("aaa")

補足情報(FW/ツールのバージョンなど)

下記の動画を参考に作成しました。
https://www.youtube.com/watch?v=1-UOksMm0r8

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

68user

2022/11/29 06:04

functions のログにエラー内容が出ているはずですので確認してみましょう。
emememem

2022/11/29 09:46

回答ありがとうございます。 ログを見たところ引数の数が原因かと思われましたが,未だ解決できていません。
68user

2022/11/29 12:11

そもそもその動画は function 前提で説明してないように見えますので、function にのっけたいのであれば hello world レベルから始めたほうがよいでしょう。 1st gen のサンプル https://cloud.google.com/functions/docs/samples/functions-helloworld-pubsub?hl=ja 2nd gen のサンプル https://cloud.google.com/functions/docs/samples/functions-cloudevent-pubsub?hl=ja いずれもコード部分で「python」タブを選択してください。
68user

2022/11/29 12:12

エラーは 2 arguments と言ってるんだから、多分今は 1st gen で登録しているのだろうと思われます。
emememem

2022/11/29 13:12

確かに動画とは環境が違いますね。 サンプルから始めてみようと思います。 丁寧な回答ありがとうございます!

回答1

0

自己解決

時間をおいて同じコードを書いて実行したらなぜか出来てしまいました。明確な原因は不明のままです。
回答くださった方々有難うございました。

投稿2022/11/30 03:10

emememem

総合スコア1

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Google Cloud Platform

Google Cloud Platformは、Google社がクラウド上で提供しているサービス郡の総称です。エンドユーザー向けサービスと同様のインフラストラクチャーで運営されており、Webサイト開発から複雑なアプリ開発まで対応可能です。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。