我对GCP非常陌生,不确定云功能是否是解决这个问题的方法。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import tweepy
import datetime
import csv
def fetchTweets(username):
# credentials from https://apps.twitter.com/
consumerKey = "" # hidden for security reasons
consumerSecret = "" # hidden for security reasons
accessToken = "" # hidden for security reasons
accessTokenSecret = "" # hidden for security reasons
auth = tweepy.OAuthHandler(consumerKey, consumerSecret)
auth.set_access_token(accessToken, accessTokenSecret)
api = tweepy.API(auth)
startDate = datetime.datetime(2019, 1, 1, 0, 0, 0)
endDate = datetime.datetime.now()
print (endDate)
tweets = []
tmpTweets = api.user_timeline(username)
for tweet in tmpTweets:
if tweet.created_at < endDate and tweet.created_at > startDate:
tweets.append(tweet)
lastid = ""
while (tmpTweets[-1].created_at > startDate and tmpTweets[-1].id != lastid):
print("Last Tweet @", tmpTweets[-1].created_at, " - fetching some more")
lastid = tmpTweets[-1].id
tmpTweets = api.user_timeline(username, max_id = tmpTweets[-1].id)
for tweet in tmpTweets:
if tweet.created_at < endDate and tweet.created_at > startDate:
tweets.append(tweet)
# # for CSV
#transform the tweepy tweets into a 2D array that will populate the csv
outtweets = [[tweet.id_str, tweet.created_at, tweet.text.encode("utf-8")] for tweet in tweets]
#write the csv
with open('%s_tweets.csv' % username, 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(["id","created","text"])
writer.writerows(outtweets)
pass
f = open('%s_tweets.csv' % username, "r")
contents = f.read()
return contents
fetchTweets('usernameofusertoretrieve') # this will be set manually in production
因此,我的问题是:
A. GCP云功能是这项工作的正确工具吗?或者这需要更广泛的东西,因此需要一个GCP VM实例?
B.代码中需要更改什么才能在GCP上运行?
如有任何关于方向的帮助/建议,也将不胜感激。
如果没有更多细节,你的问题很难回答。但是,我将尝试提供一些见解
GCP Cloud功能是否是作业的正确工具?或者这需要更广泛的东西,因此需要GCP VM实例?
视情况而定。使用1个CPU时,您的处理持续时间是否少于9分钟?您的进程占用的内存是否少于2Gb(应用程序内存占用文件大小tweets
array size)?
为什么文件大小如此之大?因为只有/tmp
目录是可写的,并且它是内存中的文件系统。
如果你需要长达15分钟的超时,你可以看看云运行,非常类似于云功能,我个人更喜欢。在CPU和内存的限制是相同的Cloud Function和Cloud Run(但它应该在2020年改变更多的CPU和内存)
要使代码在GCP上运行,需要对代码进行哪些更改?
从写入和读取/tmp
目录开始。最后,如果您想让您的文件整天都可用,请将其存储在云存储中(https://cloud.google.com/storage/docs)并在函数的开头检索它。如果不存在,则为当天生成,否则获取现有的。
然后,将函数def finchTweets(用户名):
的签名替换为def finchTweets(请求):
,并在请求参数中获取用户名
最终,如果您希望每天生成一代,请设置一个云调度器。
你没说安全。我建议你在私有模式下部署你的函数
所以,在这个答案中有很多GCP无服务器的概念,我不知道你对GCP的了解。如果你想要某些零件的精度,请不要犹豫!
问题内容: 我有一个非常基本的问题。 假设我调用一个函数,例如 如何获得以返回x的功能,以便可以将x用作另一个函数的输入或在程序主体中使用变量? 当我使用return并在另一个函数中调用变量时,我得到了NameError。 问题答案: def foo(): x = ‘hello world’ return x # return ‘hello world’ would do, too
我想为谷歌云存储做一些廉价的备份,我希望这些备份永远不会被检索回来,但以防万一,我想知道是否有可能避免昂贵的网络出口(数据传输)出GCP。 有一个竞争对手(AWS Glacier Deep Archive),理论上允许免费传输桶内容,VPC可以窥视同一地区的任何实例,例如AWS Lightsail,每月带宽高达几TB。 或者至少AWS免费层建议在第一年免费使用50Gb/月的CDN(从bucket到
在GCP nodejs云函数中,我使用dotenv在简单模式下重命名运行时触发器调用的函数:我通过dotenv-yaml从env_TEST. yml配置文件中读取部署函数的名称 PROD云函数触发器称为prod_fixNameFunction UAT云函数触发器称为uat_fixNameFunction 称为test_fixNameFunction的TEST云函数触发器 因为我有3.env_PRO
我有一个谷歌云功能订阅了一个主题。当需要向用户发送电子邮件时,我们的Go API会向主题发布一条消息。GCF创建电子邮件对象并将其发送到SendGrid。问题是,90%的情况下,云函数会被调用两次。 订阅的确认截止日期是600秒,文件中明确说明GCF内部确认。 我知道PubSub保证后台功能至少一次交付和GCF至少一次执行。但是,这种情况在大多数情况下都会发生,我很确定这也是不对的。 有人有什么想
实例化一个 BaaS.File 对象,以下操作都是在该对象上进行操作,如下进行实例化: let MyFile = new BaaS.File() 获取文件详情 MyFile.get(fileID) 参数说明 参数 类型 必填 说明 fileID Number Y 文件 id 返回参数说明 res.data: 参数 类型 说明 category Object 包含文件分类信息,详见以下 cdn_pa
我按照这个示例从Cloud Function连接到Postgres Cloud SQL:https://cloud.google.com/functions/docs/sql. 当我使用公共 IP 创建测试云 SQL 实例并触发云函数时,它会连接到云 SQL 实例并返回一些内容。出于安全原因,我不能将公共 IP 保留为打开状态,因此当我在云 SQL 实例上选择专用 IP 时,我得到: 我无法从文档