Не могу запланировать python скрипт с crontab - PullRequest
0 голосов
/ 28 апреля 2020

У меня есть сценарий python, который я создал в anaconda и загрузил в локальное рабочее пространство как .py

#!/usr/bin/env python
# coding: utf-8

# In[33]:


#!/usr/bin/env python
#
# Copyright 2016 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#      http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""This example downloads a criteria performance report as a string with AWQL.

To get report fields, run get_report_fields.py.

The LoadFromStorage method is pulling credentials and properties from a
"googleads.yaml" file. By default, it looks for this file in your home
directory. For more information, see the "Caching authentication information"
section of our README.

"""


from googleads import adwords
import io
import pandas as pd


adwords_client = adwords.AdWordsClient.LoadFromStorage()

  # Initialize appropriate service.
report_downloader = adwords_client.GetReportDownloader(version='v201809')

  # Create report query.
report_query = (adwords.ReportQueryBuilder()
                .Select('CampaignId', 'AdGroupId', 'Id', 'Criteria',
                          'CriteriaType', 'FinalUrls', 'Impressions', 'Clicks',
                          'Cost')
                .From('CRITERIA_PERFORMANCE_REPORT')
                .Where('Status').In('ENABLED', 'PAUSED')
                .During('LAST_7_DAYS')
                .Build())

output = io.StringIO()

report_downloader.DownloadReportWithAwql(
      report_query, 'CSV', output, skip_report_header=True,
      skip_column_header=False, skip_report_summary=True,
      include_zero_impressions=True)

output.seek(0)


df = pd.read_csv(output)

print(df.head())


# In[44]:


df.to_csv("/Users/ezerivarola/Desktop/Google_ADS_API/report1.csv",index=False)


# In[ ]:

, и я пытаюсь запланировать его с помощью crontab с помощью следующей команды:

* * * * * /usr/local/bin/python3 /Users/ezerivarola/Desktop/Google_ADS_API/Report1_DF.py

Но, хотя я не получаю никакой ошибки и при просмотре почты вижу, что она работает, файл сценария csv не генерируется.

Есть ли у кого-нибудь представление о что может быть не так?

Ответы [ 2 ]

0 голосов
/ 29 апреля 2020

Я уже решил свою проблему. Crontab не выполнял сценарий python, потому что у него не было доступа к диску. Я оставляю ссылку с более подробной информацией о решении: https://blog.bejarano.io/fixing-cron-jobs-in-mojave/

спасибо всем

0 голосов
/ 28 апреля 2020

Вам нужно изменить 5 * в начале, чтобы соответствовать периоду времени, в который вы хотите, чтобы он работал,

# ┌───────────── minute (0 - 59)
# │ ┌───────────── hour (0 - 23)
# │ │ ┌───────────── day of the month (1 - 31)
# │ │ │ ┌───────────── month (1 - 12)
# │ │ │ │ ┌───────────── day of the week (0 - 6) (Sunday to Saturday;
# │ │ │ │ │                                   7 is also Sunday on some systems)
# │ │ │ │ │
# │ │ │ │ │
# * * * * * command to execute

Ниже будет работать каждый час в час,

0 * * * * /usr/local/bin/python3 /Users/ezerivarola/Desktop/Google_ADS_API/Report1_DF.py
...