我的代码每隔X秒从Google Analytics提取数据,并通过Django Channels将其推送到WebSocket前端。我使用一个apscheduler BackgroundScheduler在指定的时间间隔上运行tick函数。但是当我运行这个程序时,内存使用量以一个非常恒定的速率增长,即使我所做的只是授权oauth API。示例代码来自消费者.py公司名称:
from channels.sessions import channel_session
from apscheduler.schedulers.background import BackgroundScheduler
from oauth2client import transport
from apiclient.discovery import build
scheduler = BackgroundScheduler()
def tick(group_id):
user = GoogleUser.objects.all()[0]
# gets DjangoORMStorage instance
credentials = get_credentials(user).get()
# THESE TWO LINES SEEM TO CAUSE THE MEMORY LEAK
oauth_http = credentials.authorize(transport.get_http_object())
analytics = build('analytics', 'v3', http=oauth_http)
@channel_session
def ws_connect(message):
# accept socket connection and add channel to group
message.reply_channel.send({"accept": True})
# add channel to websocket channel group
redis_group = Group(group_id, channel_layer=None)
redis_group.add(message.reply_channel)
# schedule job
scheduler.add_job(tick, 'interval', id=slug, kwargs={
'group_id': group_id,
}, seconds=settings.INTERVAL)
scheduler.start()
目前没有回答
相关问题 更多 >
编程相关推荐