我已经制作了一个小的Twitter机器人,我可以成功地在我的计算机上本地运行,然后我决定在服务器上托管这个机器人。我创建了一个google cloud函数,我可以将我的python代码粘贴到他们的编辑器上,但是当我启动该函数并运行测试时,我得到以下错误消息:
错误:函数终止。处理建议:检查日志,查看终止原因。其他故障排除文档可在https://cloud.google.com/functions/docs/troubleshooting#logging找到。详细信息:500内部服务器错误:服务器遇到内部错误,无法完成您的请求。服务器超载或应用程序出错。
日志中的错误信息如下:
Traceback(最近一次调用):文件"/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py ",行2073,在wsgi_app response = self.full_dispatch_request()文件"/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py ",行1518,在full_dispatch_request rv = self.handle_user_exception(e)文件"/layers/google.python.pip/pip/lib/python3.8/site-packages/flask/app.py ",行1516,在full_dispatch_request房车= self.dispatch_request()文件"/层/google.python.pip/脉冲/lib/python3.8/网站/瓶/app.py",1502行,在dispatch_request返回self.ensure_sync (self.view_functions [rule.endpoint]) (* * req.view_args)文件"/层/google.python.pip/脉冲/lib/python3.8/网站/functions_framework/init.py",第99行,view_func返回函数(request._get_current_object ()) TypeError:主要()接受0位置参数但1给出了
我已经从谷歌平台添加了一个图像,但我也添加了python代码从谷歌函数内联编辑器:
设置google cloud函数的python代码
def main():
import tweepy
import time
import config
client = tweepy.Client(bearer_token=config.BEARER_TOKEN, consumer_key=config.CONSUMER_KEY,
consumer_secret=config.CONSUMER_SECRET, access_token=config.ACCESS_KEY, access_token_secret=config.ACCESS_SECRET)
auth = tweepy.OAuth1UserHandler(
config.CONSUMER_KEY, config.CONSUMER_SECRET, config.ACCESS_KEY, config.ACCESS_SECRET)
api = tweepy.API(auth)
search_terms = ["#MUFC"]
class MyStream(tweepy.StreamingClient):
def on_connect(self):
print("Connected")
def on_tweet(self, tweet):
if tweet.referenced_tweets == None:
print(tweet.text)
client.retweet(tweet.id)
client.like(tweet.id)
time.sleep(0.5)
stream = MyStream(bearer_token=config.BEARER_TOKEN)
rules = tweepy.StreamRule("(from:FabrizioRomano) (#MUFC) (Manchester United) (-is:reply)")
stream.add_rules(rules)
print(stream.get_rules())
stream.filter()
当云函数激活你的代码时,它们会自动传递一些参数,这样你就可以根据你激活的URL的参数来改变代码行为。
简而言之——错误信息的最后一行为你指明了正确的方向;
TypeError: main()接受0个位置参数,但是给出了1个
这意味着你的函数不期望任何参数,它已经惊讶地收到一个。最简单的修复可能是:将main()
更改为main(request)