2017-07-17 87 views
2

我剛剛部署了appengine應用程序,當我休息時,獲取調用觸發隊列,我得到下面的UnknownQueueError。看起來這個異常是在下面的源代碼行引發的。關於是什麼導致問題的任何想法。我在本地進行了測試,效果非常好。Google App引擎錯誤未知任務隊列

q.add(task) 

異常

Exception on /tasks/stock/prices/dispatch [GET] 
Traceback (most recent call last): 
File "/base/data/home/apps/s~xxxxx-173913/internal- 
api:20170716t091842.402709903291335684/lib/flask/app.py", line 1817, 
in wsgi_app 
response = self.full_dispatch_request() 
File "/base/data/home/apps/s~xxxxx-173913/internal- 
api:20170716t091842.402709903291335684/lib/flask/app.py", line 1477, 
in full_dispatch_request 
rv = self.handle_user_exception(e) 
File "/base/data/home/apps/s~xxxx-173913/internal- 
api:20170716t091842.402709903291335684/lib/flask/app.py", line 1381, 
in handle_user_exception 
reraise(exc_type, exc_value, tb) 
File "/base/data/home/apps/s~xxxxxx-173913/internal- 
api:20170716t091842.402709903291335684/lib/flask/app.py", line 1475, 
in full_dispatch_request 
rv = self.dispatch_request() 
File "/base/data/home/apps/s~xxxxxx-173913/internal- 
api:20170716t091842.402709903291335684/lib/flask/app.py", line 1461, 
in dispatch_request 
return self.view_functions[rule.endpoint](**req.view_args) 
File "/base/data/home/apps/s~xxxx-173913/internal-apixxx/ 
internal/tasks/stock_prices_dispa 
tch.py", line 34, in run 
q.add(task) 
File"/base/data/home/runtimes/python27/python27_lib 
/versions/1/google/appengine/api/taskqueue/taskqueue.py", 
line 2128, in add 
return self.add_async(task, transactional).get_result() 
File"/base/data/home/runtimes/python27/python27_lib 
/versions/1/google/appeng 
ine/api/apiproxy_stub_map.py", line 613, in get_result 
return self.__get_result_hook(self) 
File "/base/data/home/runtimes/python27/ 
python27_lib/versions/1/google/appeng 
ine/api/taskqueue/taskqueue.py", line 2162, in ResultHook 
raise exception 
UnknownQueueError 

源代碼

task = Blueprint('tasks.stock.prices.dispatch', __name__) 
@task.route('/tasks/stock/prices/dispatch') 
def run(): 
    q = taskqueue.Queue('push-queue') 
    from_date = request.args.get('from') 
    to_date = request.args.get('to') 

    with open(os.path.join(os.path.dirname(__file__), 
      "../resources/dow_30.csv")) as csvfile: 

    reader = csv.DictReader(csvfile) 
    for row in reader: 
     ticker = row['TICKER'] 
     stock_code = row['StockCode'] 

     task = taskqueue.Task(
      url='/tasks/stock/prices/shard', 
      target='internal-api', 
      headers={'Content-Type' : 'application/json'}, 
      payload=json.dumps({'ticker': ticker, 'stock_code': stock_code, 'from' : from_date, 'to' : to_date})) 

     logging.info("StockCode :=" + stock_code) 

     q.add(task) 

return "OK" 
+1

您是否在開發人員控制檯的[Task Queues](https://console.cloud.google.appeogle.com/taskqueues)顯示中看到您的「推送隊列」隊列?如果不嘗試顯式地部署隊列配置:https://cloud.google.com/appengine/docs/standard/python/tools/appcfg-arguments#update_queues(或使用'gcould app deploy ') –

+0

@ DanCornilescu工作完美!非常感謝 – user845405

回答

2

當我部署的應用程序,我忘了部署queue.yaml中。一旦我做了以下(由@DanCornilescu提供)它解決了這個問題。

gcould app deploy <path_to_your_queue.yaml>