为python脚本分配一个URL以在Google云上运行cron作业?

2024-09-29 23:21:31 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个简单的Django应用程序,它显示它从数据库中提取的一些数据。我有一个Python脚本来更新数据,我希望它每天都能运行。我不知道如何格式化我的应用程序yaml所以他们会对克罗恩·亚姆. 在

在克罗恩·亚姆看起来像这样:

cron:
- description: "daily update"
  url: /go
  schedule: every 24 hours

在应用程序yaml看起来像这样(减去一些敏感部位):

^{pr2}$

脚本如下所示:

import pandas as pd
import numpy as np
import requests
import webapp2
import urllib2
import urllib3
import certifi
import json
import re
from rcg_func_dj import pull_rc, pull_artists, artist_cycle, tally

import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "rcg_new.settings")
import django
django.setup()
from rcg_app.models import Gender, Groups

http = urllib3.PoolManager(cert_reqs='CERT_REQUIRED', ca_certs=certifi.where())
spot_id = os.environ['SPOT_ID']
spot_sec = os.environ['SPOT_SEC']

class update_dbs(webapp2.RequestHandler):
    def get(self):

        self.response.headers["Content-Type"] = "text/html"
        self.response.write('running rcg...')
        rc = pull_rc(spot_id, spot_sec)
        artists_unprocessed = pull_artists(rc)
        artists_processed = artist_cycle(artists_unprocessed)
        tally(artists_processed)
        self.response.write('rcg done!')


routes = [('/go', update_dbs)]
app = webapp2.WSGIApplication(routes, debug=True) 

这个脚本可以工作,因为我首先用它来填充数据库!在

它在任务队列中显示得很好,但是当我尝试运行它时,它会给我一个“失败”的状态。但日志中没有显示任何内容。在


Tags: importself脚本数据库应用程序osresponseenviron
1条回答
网友
1楼 · 发布于 2024-09-29 23:21:31

我从来没有通过webapp和应用程序yaml,但我确实找到了一个解决方法:我在运行脚本的Django应用程序中创建了一个新视图。在

花了一段时间才明白!在

棘手的部分是cron作业正在进行一个调用,该调用涉及从“url/script/”重定向到“url/script”,它只会进行初始调用,而不会进行重定向。在

所以当你在网址.py'Django应用程序的文件,请确保不要在后面加斜杠!在

应该是这样的:

urlpatterns = [
    path('script', views.script, name='script')
]

。。。不是这样的:

^{pr2}$

当克罗恩·亚姆看起来像这样:

cron:
- description: "daily update"
  url: /app/script/
  schedule: every 24 hours

我仍然不完全明白为什么这样做有效。比我聪明的人,如果你有笔记就跟进。在

相关问题 更多 >

    热门问题